钩子程序,有问题,请高手帮忙

来源:百度知道 编辑:UC知道 时间:2024/05/28 12:20:38
本人新学钩子,写了个程序看看效果,但是有问题,代码为:
钩子函数为:
LRESULT WINAPI HookPro( int nCode, WPARAM wParam,LPARAM lParam)
{
char szKey[80];
GetKeyNameText(lParam,szKey,80);
CString str;
str.Format("%s",szKey);
AfxMessageBox(str);
return 0;
}

在OnInitDialog()中我加入了以下代码安装钩子
HHOOK flag=SetWindowsHookEx(WH_KEYBOARD,HookPro,NULL,GetCurrentProcessId());
if(flag)
AfxMessageBox("OK");
但是我运行程序时发现没有弹出对话框”OK”,也就是说明了我的钩子安装失败了,为什么呢,这个钩子只是个局部的钩子
请高手解答下下,顺便给出正确解答,谢谢啊

是这样,SetWindowsHookEx的第四个参数是线程的ID,不是进程的ID。要知道,消息队列是线程拥有的,不是进程拥有的,也就是说,你不能把进程的ID当作参数传递给SetWindowsHookEx。你把GetCurrentProcessId()改成GetCurrentThreadId()试试。

你不能ruturn 0,要call next 钩子。