SetWindowHookEx中的WH_GETMESSAGE对应的回调函数不执行?
先说下我的做法:
在一个基于对话框的应用程序中,响应一个按钮消息,在这个消息函数里面得到桌面的句柄hwndLV,然后获取其线程的ID:
DWORD dwThreadId = GetWindowThreadProcessId(hwndLV, NULL);
写了一个MFC Regular DLL,在InitInstance()中,获取当前DLL的加载虚拟地址:
HINSTANCE g_hInst = AfxGetInstanceHandle();
在这个DLL中定义一个导出函数SomeFunc,带一个参数,接受线程ID,为dwThreadId,以便把DLL注入到这个线程所在的进程中:
SetWindowHookEx(WH_GETMESSAGE, GetMsgProc, g_hInst, dwThreadId);
其中,GetMsgProc定义如下:
LRESUT CALLBACK GetMsgProc(WPARAM wParam, LPARAM lParam)
{
}
最后在我的基于对话框的应用程序的那个响应函数中,把获得的线程ID,通过调用DLL的导出函数实现对指定进程注入DLL:
SomeFunc(dwThreadId);
结果,无论如何努力,DLL中的GetMsgProc函数就是不被执行。请大家分析下原因。