Ahora compruebo el timeout que me dijiste pero mientras pongo lo que estuve comprobando:
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:
Resultado:
@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:
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
Código (cpp) [Seleccionar]
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 (cpp) [Seleccionar]
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 (cpp) [Seleccionar]
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