Je veux définir le hook global qui suit quelle application est active.Comment définir un hook global pour WH_CALLWNDPROCRET?
Dans mon programme principal que je fais le foloowing:
HMODULE mod=::GetModuleHandle(L"HookProcDll");
HHOOK rslt=(WH_CALLWNDPROCRET,MyCallWndRetProc,mod,0);
La procédure de crochet qui est appelé MyCallWndRetProc
existe dans dll séparé appelé HookProcDll.dll. La procédure de connexion surveille le message WM_ACTIVATE
. Le fait est que le code est bloqué dans la ligne où je place le crochet, c'est-à-dire dans la ligne où j'appelle ::SetWindowsHookEx
. Et puis Windows ne répond plus, ma barre des tâches disparaît et il me reste un bureau vide. Ensuite, je dois réinitialiser l'ordinateur.
Qu'est-ce qui ne va pas, pourquoi Windows ne répond pas? et Ai-je besoin d'injecter HookProcDll.dll dans chaque processus pour définir le hook global, et comment puis-je faire cela?
Je pense qu'il vous manque un nom de fonction dans la deuxième ligne. Et vous n'avez pas publié le code le plus important: l'appel 'SetWindowsHookEx' et votre proc hook. – interjay
Je présume que HHOOK rslt = (..) est supposé être HHOOK rslt = SetWindowsHookEx (...); – Michael
Vous injectez déjà la DLL dans chaque processus. Quel est le problème, vous plantez chaque application GUI, y compris l'Explorateur Windows. Injectez-le dans votre propre premier afin que vous puissiez le déboguer. –