HHOOK WINAPI SetWindowsHookEx(
__in int idHook,
__in HOOKPROC lpfn,
__in HINSTANCE hMod,
__in DWORD dwThreadId
);
С помощью этой API-функции можно перехватывать различные события, в том числе и событие от мыши и клавиатуры. Подробное описание функции лежит в MSDN.
Для того чтобы перехватить событие текущей нити, достаточно определить функцию, соответствующую сигнатуре HOOKPROC и вызвать функцию SetWindowsHookEx, как приведено в примере ниже:
LRESULT CALLBACK hook_proc(int code, WPARAM wParam,Исходный код приведенного примера лежит тут.
LPARAM lParam)
{
MessageBoxA(NULL, "Key Pressed", "Key Pressed", MB_OK);
return CallNextHookEx(NULL, code, wParam, lParam);
}
//Где-то в программе {
HHOOK hHook = SetWindowsHookExA(WH_KEYBOARD, hook_proc, NULL,
GetCurrentThreadId());
if (hHook == NULL)
{
DWORD err = GetLastError();
char chr[20];
itoa(err, chr, 10);
MessageBoxA(hWnd, chr, "Error", MB_OK | MB_ICONERROR);
}
else
{
MessageBoxA(hWnd, chr, "Keyboard Evend Hooked!",
MB_OK | MB_ICONERROR);
}
//}
Перехват глобального события требует создания DLL с функцией-обработчиком события. Подробно о создании DLL написано здесь.
Исходный код примера можно загрузить по этой ссылке.
Комментариев нет:
Отправить комментарий