J'ai déjà posé une question sur quelque chose de similaire mais je crois que cette fois les circonstances sont différentes.appelant setwindowshookex avec WH_GETMESSAGE ne fonctionne sur aucun processus, sauf l'injecteur
J'ai une DLL qui a des fonctions standard de crochet, de décrochage et de msgProc. Je charge cette DLL dans mon application principale et ensuite appeler « crochet », qui est au-dessous:
HOOKDLL_API BOOL setHook(HWND hWnd, DWORD threadID)
{
if(hWndServer != NULL)
return FALSE;
hook = SetWindowsHookEx(WH_GETMESSAGE, (HOOKPROC)msghook, hInstance, threadID);
if(hook != NULL)
{
hWndServer = hWnd;
ofstream logFile;
logFile.open("LOG.txt");
logFile << "Hooked for: " << hWndServer << endl;
logFile.close();
return TRUE;
}
return FALSE;
}
Le problème est que si je fais mondiale, avec ThreadID = 0, msghook seulement et ne capture que les messages reçus par la fenêtre du processus qui a chargé la bibliothèque et rien d'autre, même si c'est supposé être un hook global.
Si je fournis un threadID d'une autre fenêtre, je ne reçois aucun message.
Quelle pourrait être la raison de cela?
Je vois, oui mon application est construite pour 32 et je le testais sur mspaint.exe qui est je crois 64 bits. Je l'ai essayé sur Skype et ça a marché. Bizarre cependant que cela a fonctionné pour certains sous-fenêtres seulement. Le repos est bien je crois. Bien que je ne peux pas capturer des clics sur, disons la barre d'état système, car il n'a pas fonctionné pour cela. –
@DD: Cette question & réponses peut vous aider: http://stackoverflow.com/questions/4287352/is-there-a-way-for-application-on-windows-64-bit-to-execute-code- les deux-sous-64-bi / –