在Microsoft Windows(8)上,我想启动一个进程,并阻止它显示任何窗口。或者,强制关闭所显示的任何窗口。 有办法吗?
我的应用是:我在我的持续集成(teamcity)服务器上运行自动(nunit)测试套件。被测代码也由交互式应用程序使用。开发人员偶尔会在用户提示符的对话框中滑动,而不会意识到他们正在做什么。这会导致CI进程停止,等待从未到来的用户输入。我希望能够解除出现的任何对话框,或阻止它们显示。
更好的是此时强制异常,这样测试也会失败。
就我而言,这是一个C#应用程序,显示的对话框是Windows窗体或WPF对话框。
我确实找到了几个类似的问题。然而每个人都解决了一个稍微不同的问题。
答案 0 :(得分:1)
您是否考虑过让开发团队针对测试目的采用“无对话”模式?也许如果你不再把它们称为(!! *&%),他们会倾向于与你合作。 ;)毕竟,你在同一家公司的同一产品上工作:)
在任何情况下,如果没有特定于开发人员的解决方案,请考虑让另一个应用程序(进程或线程)持续休眠几秒钟,唤醒并在应用程序中查找模式对话框。您可以使用FindWindow等API来识别弹出模式对话框的时间。 (使用Spy ++获取MessageBox和CreateDialog API创建的窗口的类名。)