【问题标题】:How do you detect if a window has a "Do you want to save changes" dialog?如何检测窗口是否有“是否要保存更改”对话框?
【发布时间】:2017-03-10 07:09:18
【问题描述】:

我正在尝试关闭 WPF 应用程序中类似于 this 的其他窗口。问题是某些窗口应用程序(例如记事本)仅显示包含“您要保存更改吗?”的对话框。如何检测窗口是否没有自动关闭?另外,是否有可能的方法来覆盖此行为?

【问题讨论】:

  • 您想从不同的进程控制记事本?真的吗?
  • 为什么要关闭其他应用程序?如果我们知道原因,我们或许可以提出替代解决方案。

标签: c# wpf winapi


【解决方案1】:

没有通用的“您要保存吗?” Windows 中的对话框。应用程序通常只显示一个MessageBox 来响应WM_CLOSE 消息。

您可以尝试手动发布 WM_CLOSE 消息到顶级窗口,如果在短暂超时后,窗口被禁用但仍然可见,那么您可以假设它正在显示一个可能要求用户保存的模态对话框。

为了使其更健壮,您可以在一个线程上发送消息并在另一个线程上检查启用状态,但这仍然是您真正应该避免的黑客攻击。

与其他 UI 应用程序交互的正确方法是使用UI Automation。特别是如果您打算做一些令人讨厌的事情,例如代表用户单击其中一个按钮。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多