【发布时间】:2009-12-10 17:29:21
【问题描述】:
我正在开发一个使用 Microsoft XPS Document Writer 驱动程序打印报告的应用程序。如果用户试图覆盖打开的文件,驱动程序会弹出一个错误对话框,提示用户无权保存。但是,在一台 QA 的机器上,弹出对话框永远不会出现。我希望应用程序弹出自己的错误对话框,但前提是驱动程序的错误对话框不弹出。如何检测是否弹出驱动错误对话框??
【问题讨论】:
我正在开发一个使用 Microsoft XPS Document Writer 驱动程序打印报告的应用程序。如果用户试图覆盖打开的文件,驱动程序会弹出一个错误对话框,提示用户无权保存。但是,在一台 QA 的机器上,弹出对话框永远不会出现。我希望应用程序弹出自己的错误对话框,但前提是驱动程序的错误对话框不弹出。如何检测是否弹出驱动错误对话框??
【问题讨论】:
不要让错误传播到那么远?
询问文件名,检测它的(不)存在,显示您自己的错误,将文档传递给打印机。
【讨论】:
我不认为这是你可以做到 100% 正确的事情。除非您不了解某些 API,否则判断对话框是否出现的唯一方法是屏幕抓取。也就是说,查看活动的一组窗口,看看是否有标题/消息指示弹出错误对话框。
这种方法有几个问题。首先是它会产生误报。您可能会被具有相似名称的类似对话框欺骗。
此外,也不能保证您的代码会在用户关闭对话框之前运行。因此,您最终可能会认为对话框在实际出现的情况下没有出现。
【讨论】:
要测试窗口是否存在,您可以使用FindWindow function 或EnumWindows function 和EnumChildWindows function 之类的东西。
【讨论】: