【问题标题】:How to suppress dialog/popup window of application that you have just launched from your C# code?如何抑制刚刚从 C# 代码启动的应用程序的对话框/弹出窗口?
【发布时间】:2011-06-09 09:05:32
【问题描述】:

我正在从我的 C# 应用程序启动另一个应用程序,在执行之前有时会显示带有一些信息的对话框/弹出窗口。

是否可以抑制或隐藏此对话框和对话框的任务栏图标?

编辑


是否可以拦截对显示此对话框的 win32 函数的调用,从而防止弹出窗口?

【问题讨论】:

  • 只是好奇对话框/弹出窗口显示的是什么。这是试用版应用吗?
  • 旨在以这种方式启动的应用程序有时会接受-quiet 命令行参数或类似参数。没有其他“正常”方法可以抑制对话框,因为它们是要弹出的。不过,如果您有创意,也有一些方法,例如在一定时间后模拟鼠标点击活动的应用程序,但没有什么通用的。
  • @eibhrum:这是一个没有源代码或任何支持的“内部”应用程序,我需要它来自动化我们的流程。但是,如果有人需要坐在 PC 后面并点击这个愚蠢的对话框,那么就不可能有任何自动化。

标签: c# .net dialog launching-application suppress


【解决方案1】:

您可以通过PInvokeFindWindow 发送消息WM_CLOSE 或单击取消按钮或其他任何方式。

【讨论】:

  • 我是否需要循环执行此操作并不断检查是否有窗口?或者我可以对某些事件做出反应吗?
  • 你必须在循环中执行它,是的 - 但如果它在你启动程序时出现,你有一个相当小的时间窗口来“寻找”窗口,所以你不应该循环很长一段时间,如果那是一个问题
【解决方案2】:

在确定主(父)应用程序已完全启动并显示其窗口后,为什么不启动第二个应用程序?

【讨论】:

  • 我的主应用程序只是调用其他几个应用程序来自动做一些事情。但是其中一个应用程序显示了阻止此自动化工作的对话框。
  • 所以你的主应用程序不能延迟这个启动活动吗?可能会推动将活动加载到 Form.Shown 事件方法中,而不是在 ctor 中。
  • 什么?我想你不明白我的问题是什么。
  • 根据您的解释,您的主应用程序不直接依赖(紧密耦合)子应用程序来启动自己,对吗?如果是这样,你不会像 Form.Shown 事件那样延迟调用活动吗?
【解决方案3】:

大多数情况下,此类应用程序提供“在后台运行(不可见)”参数,您可以在启动它们时提供这些参数。检查你是否有这样的论点。

【讨论】:

  • @Primoz:您必须查看该应用程序“安静”的文档,“静音”不会工作。对于此类参数,有时可能为真或假。但是不看文档你是猜不到的。
猜你喜欢
  • 2016-10-18
  • 2016-05-11
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-12
  • 2023-03-11
相关资源
最近更新 更多