阻止 WM_QUIT
快问。
我有一个通过 PInvoke 使用本机 DLL 的应用程序,该 DLL 可能调用 PostQuitMessage()。
我怎样才能避免它? (因为我的应用程序不应该关闭)
我尝试了 AddMessageFilter,但它不会触发 WM_QUIT。
Quick question.
I have an app that use a native DLL through PInvoke, this DLL may call a PostQuitMessage().
How can I avoid it? (as my app should not close)
I tried AddMessageFilter, but it doesn't trigger the WM_QUIT.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
是的,IMessageFilter 无法工作。 WM_QUIT 使 GetMessage() 函数返回 FALSE。它永远不会调用消息过滤器,消息循环立即退出。重写 WndProc() 或取消 OnFormClosing() 也不起作用。我能想到的唯一解决方法是 Detours 禁用 PostQuitMessage()。这需要一些 C/C++ 技能。
Yup, IMessageFilter cannot work. WM_QUIT makes the GetMessage() function return FALSE. It never gets around to calling the message filter, the message loop immediately exits. Overriding WndProc() or canceling OnFormClosing() won't work either. The only workaround I can think of is Detours to disable PostQuitMessage(). That requires some C/C++ skillz.
如果您从不拥有任何窗口的线程调用,则 PostQuitMessage() 将不起作用。
PostQuitMessage() will have no effect if you call from a thread that doesn't own any windows.