【问题标题】:Killing a program if it displays a dialog box (devenv.com running under CruiseControl.net)如果程序显示对话框,则终止程序(在 CruiseControl.net 下运行的 devenv.com)
【发布时间】:2010-03-04 15:20:09
【问题描述】:

我有 CruiseControl.net 运行 Visual Studio (2005/2008 - 使用 devenv.com),因为我们需要构建部署项目 (.vdproj)。

有时,由于各种原因,devenv 决定即使它是从命令行运行的,使用 devenv.com 变体,它仍然想建立一个对话框。

现在,由于它在远程服务器上的 CruiseControl.net 下运行,这是从未见过的,唯一的症状是构建最终会超时。当构建仍在进行时,查看任务会显示 devenv 正在运行但不消耗任何处理器功率。

是否有一个方便的实用程序可以通过它运行 devenv.com,它基本上会监视它启动的程序,如果它敢于显示任何类型的对话框,基本上就会杀死它?

【问题讨论】:

    标签: visual-studio command-line cruisecontrol.net


    【解决方案1】:

    它提出了什么样的对话框,为什么?您可以编写一个应用程序来关闭对话框,但这并不容易——您需要使用 CBT Hooks 之类的东西。

    【讨论】:

    • 我们使用 ClearCase 进行版本控制 - 它存在一些问题,包括无法在不在各个位置引入随机字符的情况下合并 .vdproj 文件。随机损坏的 .vdproj 文件会弹出对话框。我现在已经解决了这个问题——它提出了关于源代码控制不匹配的对话框(我们故意在构建服务器上没有 ClearCase),但得到了这些。只是 .vdproj 文件损坏问题 - 我有一个更长期的方法来解决这个问题 - 专门为他们编写一个合并管理器,但这不是一个快速而简单的工作。
    • 您可能不需要 CBT 挂钩。您也许可以编写一个简单的 .net EXE,它使用像 White 这样的 UI 测试框架来查找具有已知标题/名称的窗口并将其关闭。 white.codeplex.com
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多