我正在开发一个使用Microsoft XPS文档编写器驱动程序打印报告的应用程序。如果用户试图覆盖打开的文件,驱动程序会弹出一个错误对话框,用户无权保存该对话框。然而,在一个QA的机器上,弹出对话框从未出现过。我希望应用程序弹出自己的错误对话框,但只有在驱动程序的错误对话框没有弹出的情况下。如何检测驱动程序错误对话框是否弹出?
发布于 2009-12-11 01:36:10
不要让错误传播到那么远?
询问文件名,检测它(不存在),显示您自己的错误,将文档传递给打印机。
发布于 2009-12-11 01:41:50
我不认为这是你能100%做对的事情。除非有一些你不知道的API,否则判断对话框是否出现的唯一方法是屏幕抓取。也就是说,查看活动窗口集并查看其中是否有指示错误对话框弹出的标题/消息。
不过,这种方法有几个问题。第一个问题是它会产生假阳性。你可能会被一个名字相似的对话框所欺骗。
此外,也不能保证您的代码在用户关闭对话框之前会运行。因此,你最终可能会决定对话框在实际出现的情况下不会出现。
发布于 2009-12-11 01:41:01
要测试窗口是否存在,可以使用类似于FindWindow function或EnumWindows function和EnumChildWindows function的代码。
https://stackoverflow.com/questions/1882617
复制相似问题