【问题标题】:In C# .Net, how do I detect if a dialog showed up?在 C# .Net 中,如何检测是否出现了对话框?
【发布时间】:2009-12-10 17:29:21
【问题描述】:

我正在开发一个使用 Microsoft XPS Document Writer 驱动程序打印报告的应用程序。如果用户试图覆盖打开的文件,驱动程序会弹出一个错误对话框,提示用户无权保存。但是,在一台 QA 的机器上,弹出对话框永远不会出现。我希望应用程序弹出自己的错误对话框,但前提是驱动程序的错误对话框不弹出。如何检测是否弹出驱动错误对话框??

【问题讨论】:

    标签: .net windows dialog


    【解决方案1】:

    不要让错误传播到那么远?

    询问文件名,检测它的(不)存在,显示您自己的错误,将文档传递给打印机。

    【讨论】:

    • 文件提示已经在Microsoft XPS Document驱动中完成了,所以无法手动提示输入文件并传入。
    【解决方案2】:

    我不认为这是你可以做到 100% 正确的事情。除非您不了解某些 API,否则判断对话框是否出现的唯一方法是屏幕抓取。也就是说,查看活动的一组窗口,看看是否有标题/消息指示弹出错误对话框。

    这种方法有几个问题。首先是它会产生误报。您可能会被具有相似名称的类似对话框欺骗。

    此外,也不能保证您的代码会在用户关闭对话框之前运行。因此,您最终可能会认为对话框在实际出现的情况下没有出现。

    【讨论】:

      【解决方案3】:

      要测试窗口是否存在,您可以使用FindWindow functionEnumWindows functionEnumChildWindows function 之类的东西。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-11-12
        • 1970-01-01
        • 1970-01-01
        • 2010-09-20
        • 1970-01-01
        • 2015-10-28
        相关资源
        最近更新 更多