-
-
[求助]关于WIN7 64位下的CallWindowProc()
-
发表于:
2014-2-8 05:04
5779
-
[求助]关于WIN7 64位下的CallWindowProc()
在写一个捕获目标窗口消息的程序。
思路:
向目标窗口注入DLL,然后使用SetWindowLong()修改窗口过程函数。。
问题:
在WP下, 能正常捕获。。 但是WIN 7 64位下,只能捕获部分消息。(WM_COMMAND消息(菜单)可以捕获),BUTTON 消息不能捕获。 WM_KEDOWND 消息可以捕获。
还是贴下代码。。求各位大神,指点。
LRESULT CALLBACK MyWindowProc(
HWND hwnd, // handle to window
UINT uMsg, // message identifier
WPARAM wParam, // first message parameter
LPARAM lParam // second message parameter
)
{
if (uMsg == WM_KEYDOWN)
{
int nVirtKey = (int)wParam;
if (nVirtKey == VK_HOME)
{
::MessageBox(NULL, "响应了HOME消息", NULL, MB_OK);
return FALSE;
}
}
return CallWindowProc(g_OldProc,hwnd, uMsg, wParam, lParam);
}
//下面是DLL中调用SetWindowLong()代码
HWND hCalc = ::FindWindow(NULL, "计算器");
g_hCalc = hCalc;
g_OldProc = (FUNTYPE)::SetWindowLongPtr(hCalc,
GWLP_WNDPROC,
(LONG)MyWindowProc);
if (g_OldProc == 0)
{
::MessageBox(NULL, "修改过程函数失败", NULL, MB_OK);
}
使用的是计算器做的实验!
请大家指明下,实在是想不明白为什么呢!!!
[培训]内核驱动高级班,冲击BAT一流互联网大厂工作,每周日13:00-18:00直播授课