【发布时间】:2011-05-02 06:39:29
【问题描述】:
我们正在 Windows 上使用 Visual Studio 2005 开发 C++ 应用程序(大量 MFC)。
有时,我们的夜间构建和/或单元测试会挂起,因为某些应用程序或帮助工具的某些部分会在构建遇到的极端情况下打开一个消息框。
由于自动化的东西是在没有附加任何桌面会话的情况下(由 Windows 服务)运行的,显然没有人可以确认 - 甚至读取 - GUI 消息。
有什么方法可以让 Windows 阻止应用打开对话框?或者可能是一个监视服务会话的工具,该工具会自动终止任何打开对话框的应用程序?
我认为大多数情况下,应用程序会显示意外的弹出消息,它最终会从 user32.dll 调用 MessageBox* 函数之一,并且可能“神奇地”让这些函数失败一段时间某些登录会话? (只是一个疯狂的想法。)
显然,“正确”的解决方法是让内容不打开任何对话框,但使用 3rd 方工具并不总是可能的,使用我们的工具,失败单元测试会更好这告诉我测试“非法”打开了一个消息框,而不是 hanging 单元测试。
(旁注:我们使用 Boost.Test 进行单元测试,使用 FinalBuilder 进行自动构建脚本。)
注意:删除了原始标签 [持续集成构建自动化自动化测试] 并将问题改写为更加以流程为中心。
【问题讨论】:
-
@Hans ...链接似乎是针对
Windows XP Embedded -
这就是为什么它是一个也许。你试过了吗?
标签: windows winapi visual-c++ windows-services background-process