Código
MessageBox(0, "data", "g++", 0); msgSend = true; g++; MessageBox(0, "data", "char msg[100]", 0); char msg[100]; MessageBox(0, "data", "CWPSTRUCT *data = (CWPSTRUCT *)lparam;", 0); CWPSTRUCT *data = (CWPSTRUCT *)lparam; MessageBox(0, "data", "sprintf", 0); sprintf(msg, "%d -> %x", g, data->message); MessageBox(0, msg, "Window title", 0);
Lo mismo que antes pero esta empieza desde 1 hasta 30 y el primer conjunto de dialogboxes siempre se buquea y se queda sin texto como si msg estuviera vació. (Esto también pasaba antes)
Si pongo el msgSend antes de un messagebox todo perfecto.
Luego hice un log en un txt:
Código
LRESULT CALLBACK getPw(int code,WPARAM wparam,LPARAM lparam){ if (code != HC_ACTION){ return (CallNextHookEx(hook, code, wparam, lparam)); } else if(!wparam){ if (!msgSend){ if (file == NULL){ file = fopen("holaholahola", "w"); } w("\n\n ---- New call ----"); w("g++"); MessageBox(0, "data", "g++", 0); g++; w("char msg[100]"); MessageBox(0, "data", "char msg[100]", 0); char msg[100]; w("CWPSTRUCT *data = (CWPSTRUCT *)lparam;"); MessageBox(0, "data", "CWPSTRUCT *data = (CWPSTRUCT *)lparam;", 0); CWPSTRUCT *data = (CWPSTRUCT *)lparam; w("sprintf"); MessageBox(0, "data", "sprintf", 0); sprintf(msg, "%d -> %x", g, data->message); w("msgSend = true;"); MessageBox(0, msg, "MsgSend", 0); msgSend = true; } } return 1; } void w(char *str){ fwrite(str, 1, strlen(str), file); fwrite("\n", 1, 2, file); fflush(file); }
Resultado:
Citar
---- New call ----
g++
---- New call ----
g++
---- New call ----
g++
---- New call ----
g++
---- New call ----
g++
---- New call ----
g++
---- New call ----
g++
---- New call ----
g++
---- New call ----
g++
---- New call ----
g++
---- New call ----
g++
---- New call ----
g++
---- New call ----
g++
---- New call ----
g++
---- New call ----
g++
---- New call ----
g++
---- New call ----
g++
---- New call ----
g++
---- New call ----
g++
---- New call ----
g++
---- New call ----
g++
---- New call ----
g++
---- New call ----
g++
---- New call ----
g++
---- New call ----
g++
---- New call ----
g++
---- New call ----
g++
---- New call ----
g++
---- New call ----
g++
---- New call ----
g++
---- New call ----
g++
char msg[100]
CWPSTRUCT *data = (CWPSTRUCT *)lparam;
sprintf
msgSend = true;
char msg[100]
CWPSTRUCT *data = (CWPSTRUCT *)lparam;
sprintf
msgSend = true;
char msg[100]
CWPSTRUCT *data = (CWPSTRUCT *)lparam;
sprintf
msgSend = true;
char msg[100]
CWPSTRUCT *data = (CWPSTRUCT *)lparam;
sprintf
msgSend = true;
char msg[100]
CWPSTRUCT *data = (CWPSTRUCT *)lparam;
sprintf
msgSend = true;
char msg[100]
CWPSTRUCT *data = (CWPSTRUCT *)lparam;
sprintf
msgSend = true;
char msg[100]
CWPSTRUCT *data = (CWPSTRUCT *)lparam;
sprintf
msgSend = true;
char msg[100]
CWPSTRUCT *data = (CWPSTRUCT *)lparam;
sprintf
msgSend = true;
char msg[100]
CWPSTRUCT *data = (CWPSTRUCT *)lparam;
sprintf
msgSend = true;
char msg[100]
CWPSTRUCT *data = (CWPSTRUCT *)lparam;
sprintf
msgSend = true;
char msg[100]
CWPSTRUCT *data = (CWPSTRUCT *)lparam;
sprintf
msgSend = true;
char msg[100]
CWPSTRUCT *data = (CWPSTRUCT *)lparam;
sprintf
msgSend = true;
char msg[100]
CWPSTRUCT *data = (CWPSTRUCT *)lparam;
sprintf
msgSend = true;
char msg[100]
CWPSTRUCT *data = (CWPSTRUCT *)lparam;
sprintf
msgSend = true;
char msg[100]
CWPSTRUCT *data = (CWPSTRUCT *)lparam;
sprintf
msgSend = true;
char msg[100]
CWPSTRUCT *data = (CWPSTRUCT *)lparam;
sprintf
msgSend = true;
char msg[100]
CWPSTRUCT *data = (CWPSTRUCT *)lparam;
sprintf
msgSend = true;
char msg[100]
CWPSTRUCT *data = (CWPSTRUCT *)lparam;
sprintf
msgSend = true;
char msg[100]
CWPSTRUCT *data = (CWPSTRUCT *)lparam;
sprintf
msgSend = true;
char msg[100]
CWPSTRUCT *data = (CWPSTRUCT *)lparam;
sprintf
msgSend = true;
char msg[100]
CWPSTRUCT *data = (CWPSTRUCT *)lparam;
sprintf
msgSend = true;
char msg[100]
CWPSTRUCT *data = (CWPSTRUCT *)lparam;
sprintf
msgSend = true;
char msg[100]
CWPSTRUCT *data = (CWPSTRUCT *)lparam;
sprintf
msgSend = true;
char msg[100]
CWPSTRUCT *data = (CWPSTRUCT *)lparam;
sprintf
msgSend = true;
char msg[100]
CWPSTRUCT *data = (CWPSTRUCT *)lparam;
sprintf
msgSend = true;
char msg[100]
CWPSTRUCT *data = (CWPSTRUCT *)lparam;
sprintf
msgSend = true;
char msg[100]
CWPSTRUCT *data = (CWPSTRUCT *)lparam;
sprintf
msgSend = true;
char msg[100]
CWPSTRUCT *data = (CWPSTRUCT *)lparam;
sprintf
msgSend = true;
char msg[100]
CWPSTRUCT *data = (CWPSTRUCT *)lparam;
sprintf
msgSend = true;
char msg[100]
CWPSTRUCT *data = (CWPSTRUCT *)lparam;
sprintf
msgSend = true;
char msg[100]
CWPSTRUCT *data = (CWPSTRUCT *)lparam;
sprintf
msgSend = true;
@Edit: Usando el debugger while (!GetMessage(&msg, 0, 0, 0)) nunca entra en el bucle ni al pulsar al botón X de cerrar la consola.
@Editx2: Cambie el código para comprobar si el hook sigue activo y parece que no:
Código
LRESULT CALLBACK getPw(int code,WPARAM wparam,LPARAM lparam){ if (code != HC_ACTION){ return (CallNextHookEx(hook, code, wparam, lparam)); } else if(!wparam){ if (!msgSend){ if (file == NULL){ file = fopen("holaholahola", "w"); } w("\n\n ---- New call ----"); ... msgSend = true; } else{ CWPSTRUCT *data = (CWPSTRUCT *)lparam; if (data->message == WM_LBUTTONDOWN){ MessageBox(0, "El hook sigue activo", "Buenos dias senior X!!", 0); } } } return 1; }
Después de los dialogbox del principio espero unos segundos y pulso con el ratón pero el evento parce que no se recibe porque no se muestra el dialogbox