vc++底层键盘钩子怎么用。

2024-12-17 20:14:44
推荐回答(1个)
回答1:

直接把下面代码写在程序裏就可以了,不用写在dll裏。
低级鼠标钩子和低级键盤钩子 比较特殊,都可以直接写在程序裏的。

/****************************************************************************
低级键盘钩子
#define _WIN32_WINNT 0x0500 //必须在stdafx.h中添加这一句
****************************************************************************/
HHOOK g_LowLevelKeyboardHook=NULL; //钩子句柄
LRESULT CALLBACK LowLevelKeyboardProc(int nCode,WPARAM wParam, LPARAM lParam)
{
if (nCode<0 )
return CallNextHookEx(g_LowLevelKeyboardHook,nCode,wParam,lParam);

if (wParam==WM_KEYDOWN)
{
trace( ((KBDLLHOOKSTRUCT*)lParam )->vkCode );

if ( ((KBDLLHOOKSTRUCT*)lParam )->vkCode == VK_F1 )
{

return 1;
}
}

return CallNextHookEx(g_LowLevelKeyboardHook,nCode,wParam,lParam); //传递钩子信息
}

//start Low Level Keyboard hook
g_LowLevelKeyboardHook=SetWindowsHookEx(WH_KEYBOARD_LL,LowLevelKeyboardProc,GetModuleHandle(NULL),0);
if(!g_LowLevelKeyboardHook)
::MessageBox(m_hWnd,TEXT("SetWindowsHookEx LowLevelKeyboardProc failed"),NULL,MB_OK);