estoy depurar una aplicación C++ Win32 y me gustaría llamar a una API de Win32 arbitraria del contexto de ese proceso, como si el programa se ejecute esta línea de código:¿Puedo invocar una API de Win32 desde la ventana Inmediato de Visual Studio?
DestroyWindow(0x00021c0e);
Pero entrar en ese la ventana Inmediato da:
CXX0017: Error: symbol "DestroyWindow" not found
Editar: Usando el nombre completo de la función, {,,user32.dll}[email protected]
, puedo conseguir la ventana Inmediato para comprender qué función que quiero decir y mostrar la dirección de la función:
{,,user32.dll}[email protected]
0x76600454 [email protected]
pero cuando intento llamarlo, esto sucede:
{,,user32.dll}[email protected](0x00021c0e);
CXX0004: Error: syntax error
¿Es posible llamar a una función C de la ventana Inmediato como este, o estoy ladrando al árbol equivocado?
Gracias por la idea, pero ... Eso me da 'CXX0004: Error: error de sintaxis'. Reemplazar los tipos de Windows ('BOOL' y' HWND') con tipos primitivos ('int' en ambos casos) mejora las cosas, pero luego obtengo' CXX0014: Error: missing operand'. (Estoy en un proceso de 32 bits, por cierto.) – RichieHindle
El depurador VS es realmente malo en los tipos de punteros de función de análisis, aparentemente. Intenta crear un typedef para ello. Coloque 'typedef BOOL (* DESTROYWINDOW) (HWND);' en su código, luego escriba '(* (DESTROYWINDOW) 0x76600454) ((void *) 0x00021c0e)' en el depurador. –
@ Adam: ¡Sí! (pero calificado) Al agregar su 'typedef' a mi código, * y * en realidad usando' typedef' en el código para que el compilador no descarte la definición, * y * interrumpa la ejecución del proceso dentro de la unidad de compilación donde utilicé el 'typedef', ahora puedo llamar a DestroyWindow desde la ventana inmediata. ¡Gracias! Es una pena tener que pasar por estos aros para hacerlo, pero al menos es posible. – RichieHindle