1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| // trouver la fenêtre pour laquelle je veux placer le hook
HWND hShellTray = FindWindow(L"Shell_TrayWnd", NULL);
// trouver son thread associé pour que le hook s'applique uniquement à ce thread
DWORD tid = GetWindowThreadProcessId(hShellTray, &pid);
// charger la dll de hook ( quel autre but que connaître l'adresse de la fonction de hook ? )
HMODULE dll = LoadLibrary(lpFullPath);
// obtenir l'adresse de la fonction de hook
HOOKPROC addr = (HOOKPROC)GetProcAddress(dll, "meconnect");
// appeler l'API pour poser ce hook
hHook = SetWindowsHookEx(WH_CALLWNDPROC, addr, dll, tid);
// attendre une action de l'utilisateur pour annuler le hook et décharger la dll ( peut on ne pas attendre ? )
Ma dll de hook :
//ne rien faire d'autre qu'écrire dans un fichier de log
extern "C" __declspec(dllexport) int meconnect(int code, WPARAM wParam, LPARAM lParam) {
FILE *file;
LPCWPSTRUCT pt_stMessage = (LPCWPSTRUCT)lParam;
if (code >= 0 )
{
if (pt_stMessage->message == 0x579 && pt_stMessage->wParam == 3)
{
fopen_s(&file, "C:\\temp\\hook_function.txt", "a+");
//fprintf(file, "Function keyboard_hook called avec code=0x%x\n", code);
fprintf(file, "Function keyboard_hook called \n");
fclose(file);
}
}
return(CallNextHookEx(NULL, code, wParam, lParam));
} |
Partager