2009-12-10 97 views
2

我正在使用Microsoft XPS Document Writer驱动程序打印报告的应用程序。如果用户试图覆盖已打开的文件,驱动程序会弹出一个错误对话框,用户无权保存。但是,在一台QA的机器上,弹出对话框从不显示。我希望应用程序弹出自己的错误对话框,但只有当驱动程序的错误对话框没有弹出时才会弹出。如何检测驱动程序的错误对话框是否弹出?在C#.Net中,如何检测对话框是否显示?

回答

1

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

询问文件的名称,检测它是否存在,显示自己的错误,将文档传递给打印机。

+0

文件提示已经在Microsoft XPS Document驱动程序中完成,因此我无法手动提示输入文件并将其传入。 – ATDev 2009-12-10 17:42:55

1

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

虽然这种方法有几个问题。首先是它产生误报。你可能会被类似的名字欺骗。

也不能保证你的代码会在用户关闭对话框之前运行。因此,您最终可以决定对话在实际上没有出现的情况下显示。