全局钩子对指定线程无效
想获取第三方工具界面上的某个EDIT控件的文件,该EDIT上的文本是变化的,想通过钩子获取该EDIT的WM_GETTEXT消息,每次检测到有WM_GETTEXT就重新获取EDIT上的文本,可是我通过下面的代码怎么也抓不到WM_GETTEXT消息,但通过SPY++是可以看到的。求解,十分感谢!
注意:代码中sethook的参数为第三方程序的线程ID。
LRESULT CALLBACK FunProc(
int code, // hook code
WPARAM wParam, // virtual-key code
LPARAM lParam // keystroke-message information
)
{
MSG * pMsg=(MSG*)lParam;
switch(pMsg->message)
{
case WM_GETTEXT:
//。。。。处理
UnhookWindowsHookEx(g_hKeyboard);
}
return ::CallNextHookEx(g_hMouse, code, wParam, lParam);
}
void SetHook(DWORD dwThreadId)
{
//g_hWnd=hwnd;
//g_hMouse=SetWindowsHookEx(WH_MOUSE,MouseProc,GetModuleHandle("Hook"),0);
g_hMouse=SetWindowsHookEx(WH_CALLWNDPROC,FunProc,GetModuleHandle("Hook"), dwThreadId);
DWORD errorCode = GetLastError();
}
[解决办法]
可能WM_GETTEXT被屏蔽了。
[解决办法]
用API钩子吧,
[解决办法]
推荐使用Spy4Win软件。