【发布时间】:2013-03-22 14:00:49
【问题描述】:
为了挂钩wndproc,我写了wndprochook并使用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 以捕获一些消息。所以我只是希望以前遇到过类似情况的经验丰富的人可以提供帮助。
【问题讨论】: