SetWindowsHookEx的第四个参数怎么获得?
HHOOK SetWindowsHookEx(
int idHook, // hook type
HOOKPROC lpfn, // hook procedure
HINSTANCE hMod, // handle to application instance
DWORD dwThreadId // thread identifier
)
中dwThreadId说明是:与钩子函数关联的线程ID,可是这个ID怎么得到哪?我用GetWindowThreadProcessId的返回值和第二个OUT参数都试了试,得不到正确的结果,我的代码如下:
_declspec (dllexport) void SetHook()
{
HWND hStart = ::FindWindow (NULL,"计算器");
//获得目标进程句柄
DWORD TID,PID;
TID = ::GetWindowThreadProcessId (hStart, &PID);
g_hKey=SetWindowsHookEx(WH_KEYBOARD,KeyboardProc,g_hInst,PID); //这里用PID和TID都不对,用NULL可以对所有线程设钩子
//g_hMouse=SetWindowsHookEx(WH_MOUSE,MouseProc,g_hInst,0);
}
请问高手,怎么向一个指定窗口下钩子,比如“计算器”窗口?