【发布时间】:2011-05-09 02:18:42
【问题描述】:
我不太了解SetWindowsHookEx() 的文档。我知道在第一个参数中应该放什么,但是对于第二个、第三个和第四个我很困惑。
第二个参数询问 HOOKPROC 是否就像普通的 windows proc 一样?
第三和第四我不明白。那你们能帮我解释一下吗?谢谢
【问题讨论】:
我不太了解SetWindowsHookEx() 的文档。我知道在第一个参数中应该放什么,但是对于第二个、第三个和第四个我很困惑。
第二个参数询问 HOOKPROC 是否就像普通的 windows proc 一样?
第三和第四我不明白。那你们能帮我解释一下吗?谢谢
【问题讨论】:
Windows API 文档比这里的任何人都更好地解释了所有参数:http://msdn.microsoft.com/en-us/library/ms644990(v=vs.85).aspx
second 参数是 NULL 或指向 HOOKPROC 的指针。请注意,“如果 dwThreadId 参数为零或指定由不同进程创建的线程的标识符,则 lpfn 参数必须指向 DLL 中的挂钩过程。否则,lpfn 可以指向与当前进程。”下面是一个来自 MSDN 的 HOOKPROC 示例:
LRESULT CALLBACK HookProc(
int nCode,
WPARAM wParam,
LPARAM lParam
)
{
// process event
...
return CallNextHookEx(NULL, nCode, wParam, lParam);
}
如果 dwThreadId 参数指定由当前进程创建的线程并且钩子过程在与当前进程关联的代码内,则 第三 参数必须设置为 NULL。
第四个是“钩子程序要关联的线程的标识符。如果此参数为零,则钩子程序与在同一桌面上运行的所有现有线程相关联调用线程。”
【讨论】:
GetCurrentThreadId()。如果确实是答案,请单击该答案左上角旁边的复选标记。