我有一个应用程序并希望监视MSWord按键(本地挂钩),但我不知道如何找到要使用的 pid!下面的代码在全局钩子 ( pid
= 0
) 和 ( pid
= GetCurrentThreadId
) 下效果很好。但不适用于GetWindowThreadProcessId
:
HWND hWindow = FindWindowEx(NULL,NULL,String("Notepad").w_str(),NULL);
if (!hWindow) {
ShowMessage("hWindow fail");
return;
}
unsigned long pid;
GetWindowThreadProcessId(hWindow ,&pid);
//pid = GetCurrentThreadId();
if (!hWindow) {
ShowMessage("pid fail");
return;
}
String s = "HookDLL.dll";
DllHandle=LoadLibrary(s.w_str());
HOOKFCT_2 InstHook=reinterpret_cast<HOOKFCT_2> (GetProcAddress(DllHandle,"InstallHook"));
if(!InstHook(pid, (void *)(callIt) ))
{
Label1->Caption="Unable to install mouse hook!";
}
else Label1->Caption="Mouse hook installed!";
我会非常非常感谢任何关于这个问题的...
注意:
我希望只对MSWord有一个钩子。
上面的代码有效,仅在尝试挂钩另一个应用程序时失败(即:不使用
pid
=0
或pid
=GetCurrentThreadId
),导致 = "无法安装鼠标挂钩!" .我已经尝试过
FindWindow
,,,,FindWindowEx
; 由于这不起作用,我相信问题是。GetForegroundWindow
GetActiveWindow
GetWindowThreadProcessId