为了挂钩 a wndproc
,我编写了 awndprochook
并使用SetWindowLong
:
wndproc=(WNDPROC)GetWindowLong(hwnd_1,GWL_WNDPROC);
SetWindowLong(hwnd_1,GWL_WNDPROC,(LONG)wndprochook);
wndproc
现在我必须在函数中和函数末尾做一些事情,我调用原来的wndproc
:
return wndproc(hwnd, uMsg, wParam, lParam);
它失败了,但感谢上帝,我发现CallWindowProc
:
return CallWindowProc(wndproc, hwnd, uMsg, wParam, lParam);
现在它正在工作。所以问题1:为什么我们必须使用CallWindowProc
?简单地调用时缺少什么wndproc
?
钩子运行良好,但是当我退出程序时,它崩溃了。当然,一切都完成了,崩溃实际上并没有影响任何事情。但是看到崩溃仍然很糟糕。所以问题2:这里可能发生了什么以及如何解决它?
很抱歉,我没有关于原始程序如何自行关闭的信息,因为我所做的只是挂钩wndproc
以捕获一些消息。所以我只是希望以前遇到过类似情况的经验丰富的人可以提供帮助。