阻止 WM_QUIT

发布于 2024-08-23 08:36:31 字数 158 浏览 10 评论 0原文

快问。

我有一个通过 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

毁梦 2024-08-30 08:36:31

是的,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.

迷雾森÷林ヴ 2024-08-30 08:36:31

如果您从不拥有任何窗口的线程调用,则 PostQuitMessage() 将不起作用。

PostQuitMessage() will have no effect if you call from a thread that doesn't own any windows.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文