【发布时间】:2025-12-14 00:55:02
【问题描述】:
在我的应用程序中,我有一个组件,它会打开一个弹出窗口(保存对话框)。没有禁用该对话框的合法方法。用计时器杀死它不是可靠的方法。 有什么准确的方法可以防止对话框打开吗?
【问题讨论】:
在我的应用程序中,我有一个组件,它会打开一个弹出窗口(保存对话框)。没有禁用该对话框的合法方法。用计时器杀死它不是可靠的方法。 有什么准确的方法可以防止对话框打开吗?
【问题讨论】:
也许是一些WndProc 和WM_CHILDACTIVATE 的爱。 (当然我假设所说的对话框会触发这个。)如果您需要替换现有的(但相同的进程)或应用程序级消息泵,您可能需要直接跳转到 Win32 WndProc API - 请参阅SetWindowLong .
YMMV。玩得开心。
【讨论】:
这闻起来很糟糕。为什么您的应用程序的一部分试图妨碍另一部分?如果打开对话框的组件不是面向用户的组件,并且您试图扼杀 UI 中的弹出窗口,那么您需要进行一些返工以确保组件通知 UI 它需要文件名UI可以选择如何获取它。如果您在内部使用一个组件并且它令人讨厌地打开一个对话框,那么听起来您需要调整该组件,以便该对话框取决于它被用户而不是服务使用。
像大多数 winapi 问题一样,有一种方法可以破解它,监控您的应用程序焦点,捕获 WM_CHILDACTIVATE 或轮询*窗口可能都可以工作,但它们都是解决您的应用程序不存在的事实的黑客。 t 在它的设计上是一致的。如果您可以修复设计,您最终会得到一个更可靠的解决方案,您的同事不会畏缩。
【讨论】: