【问题标题】:Prevent dialogs appearing in unattended builds防止对话框出现在无人参与的构建中
【发布时间】:2010-09-15 14:51:44
【问题描述】:

我想知道是否有一种万无一失的方法可以在 Windows 上运行程序,这样我可以保证不会显示任何类型的交互式对话框

我尝试过注册表ErrorMode hack,调用_CrtSetReportMode()等,但它们都有漏洞或者需要你修改程序。

我需要一种方法来运行 任意 程序并实际上强制 Windows 执行它们,这样它们就不可能打开窗口。如果程序试图打开一个窗口,程序崩溃是完全可以的。

将程序作为服务运行会解决问题吗?

【问题讨论】:

    标签: build-process automation build-automation


    【解决方案1】:

    我不知道任何其他可能有效的方法。作为服务运行也不能解决问题,因为对话框将显示在服务的桌面上,而您通常无权访问。

    【讨论】:

    • 这是什么意思?应用程序是否仍在等待对话框完成?我可以接受我没有看到对话框(我总是可以手动重新运行构建),只要应用程序不等待对话框。
    • 即使在不可见的服务桌面上运行程序,它仍然会等待不存在的用户按下不可见的按钮以关闭对话框。这可能不是你想要的。
    • 多么无意义。像往常一样,在 Windows 的每个角落都可以看到缺乏设计。
    • 是的,正如 Greg 所说,应用程序仍将等待用户响应,这就是为什么作为服务运行也无法解决您的问题。
    【解决方案2】:

    您可以使用诸如Detours 之类的库来拦截对可能显示对话框的函数的所有调用(这实际上可能是user32.dll 中的几乎所有内容)。

    【讨论】:

      猜你喜欢
      • 2013-04-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-04-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多