一个简单的钩子函数示例,用于捕获键盘按键事件:
c#include <windows.h>
HHOOK hKeyboardHook;
// 键盘钩子回调函数
LRESULT CALLBACK KeyboardProc(int nCode, WPARAM wParam, LPARAM lParam) {
if (nCode >= 0) {
if (wParam == WM_KEYDOWN) {
KBDLLHOOKSTRUCT *pKeyBoard = (KBDLLHOOKSTRUCT *)lParam;
int key = pKeyBoard->vkCode;
printf("Key pressed: %d\n", key);
}
}
return CallNextHookEx(hKeyboardHook, nCode, wParam, lParam);
}
// 设置键盘钩子
void SetKeyboardHook() {
hKeyboardHook = SetWindowsHookEx(WH_KEYBOARD_LL, KeyboardProc, NULL, 0);
if (!hKeyboardHook) {
printf("Failed to install hook!\n");
}
}
// 卸载键盘钩子
void UnsetKeyboardHook() {
UnhookWindowsHookEx(hKeyboardHook);
}
int main() {
SetKeyboardHook();
// 保持应用程序运行
MSG msg;
while (GetMessage(&msg, NULL, 0, 0)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
UnsetKeyboardHook();
return 0;
}
|