防止进程显示任何对话框?

时间:2014-02-24 21:55:01

标签: windows windows-services continuous-integration

在Microsoft Windows(8)上,我想启动一个进程,并阻止它显示任何窗口。或者,强制关闭所显示的任何窗口。 有办法吗?

我的应用是:我在我的持续集成(teamcity)服务器上运行自动(nunit)测试套件。被测代码也由交互式应用程序使用。开发人员偶尔会在用户提示符的对话框中滑动,而不会意识到他们正在做什么。这会导致CI进程停止,等待从未到来的用户输入。我希望能够解除出现的任何对话框,或阻止它们显示。

更好的是此时强制异常,这样测试也会失败。

就我而言,这是一个C#应用程序,显示的对话框是Windows窗体或WPF对话框。

我确实找到了几个类似的问题。然而每个人都解决了一个稍微不同的问题。

1 个答案:

答案 0 :(得分:1)

您是否考虑过让开发团队针对测试目的采用“无对话”模式?也许如果你不再把它们称为(!! *&%),他们会倾向于与你合作。 ;)毕竟,你在同一家公司的同一产品上工作:)

在任何情况下,如果没有特定于开发人员的解决方案,请考虑让另一个应用程序(进程或线程)持续休眠几秒钟,唤醒并在应用程序中查找模式对话框。您可以使用FindWindow等API来识别弹出模式对话框的时间。 (使用Spy ++获取MessageBox和CreateDialog API创建的窗口的类名。)