MFC 钩子简介
在MFC程序中,钩子是一个强大的武器,要小心使用全局钩子,一般使用线程钩子,关键步骤如下:
下面所有代码都在cpp文件中添加:
1、 声明全局钩子变量,全局钩子函数:
HHOOK g_hMyHhook = NULL;
LRESULT CALLBACK MyMouseProc( int nCode,WPARAM wParam,LPARAM lParam);
2、定义全局钩子函数:
LRESULT CALLBACK MyMouseProc( int nCode,WPARAM wParam,LPARAM lParam)
{
if (wParam == WM_LBUTTONDOWN) //举例,截获鼠标左键单击消息
{
}
return CallNextHookEx(g_hMyHhook,nCode,wParam,lParam);//传递消息
}
3、初始化函数中加载钩子
if(g_hMyHhook == NULL)
{
g_hMyHhook = SetWindowsHookEx(WH_MOUSE, MyMouseProc, NULL, GetCurrentThreadId());
4、程序退出卸载钩子
if(g_hMyHhook)
{
UnhookWindowsHookEx(g_hMyHhook);
g_hMyHhook = NULL;
}