#define WH_KEYBOARD_LL???? 13
定義一個鉤子函數
LRESULT CALLBACK HookFun(int nCode, WPARAM wParam, LPARAM lParam);
HHOOK g_hHook = NULL;
首先要安裝鉤子
g_hHook = SetWindowsHookEx(WH_KEYBOARD_LL, HookFun, GetModuleHandle(NULL), NULL);
if(g_hHook == NULL)
?AfxMessageBox("hook failure!");
在程序結束時要卸載鉤子
UnhookWindowsHookEx(g_hHook);
鉤子函數的實現
LRESULT CALLBACK HookFun(int nCode, WPARAM wParam, LPARAM lParam)
{
??CWPSTRUCT* p = (CWPSTRUCT*) lParam;
?if (nCode == HC_ACTION)
?{?
??switch (wParam)?//wParam中是消息ID
??{?
??case WM_KEYDOWN:?
???{??
??????if(p->lParam == 'l' || p->lParam == 'L')?
??????{
?????????? // 'l' 鍵被按下?
????????????//do somthing
???????}
????
????if(p->lParam == VK_ESCAPE)
????{//用戶按下了Esc
??????//do somthing
????}??
??}?
?}
?return CallNextHookEx(NULL, nCode, wParam, lParam);
}