为了挂钩 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以捕获一些消息。所以我只是希望以前遇到过类似情况的经验丰富的人可以提供帮助。