【问题标题】:Hiding a windowed application launched by a java application?隐藏由java应用程序启动的窗口应用程序?
【发布时间】:2011-01-12 16:47:29
【问题描述】:

我正在开发一个必须启动不同应用程序的 Java 应用程序。如果我使用Runtime.getRuntime().exec() 启动第二个应用程序,它将成为活动进程,并且它的窗口位于我的应用程序窗口之前。我真正想做的是在“隐藏”模式下启动进程,这样它的任务栏条目就不会出现,并且它的窗口最初是不可见的或在我的应用程序窗口后面。然后我的应用程序将使其可见或在它准备好时将其移到前面。这是可能的还是我要求的太多了?

这是一个演示。所以我不担心安全问题。

编辑:丹尼尔的回答给了我一个想法。如果我使用 Powershell 而不是 CMD.EXE 来调用应用程序会怎样?这会让我在没有窗口的情况下启动应用程序然后将窗口带回来吗?我将使用启动 java 启动 PowerShell 启动应用程序,但这是什么鬼!

【问题讨论】:

  • 当您的应用程序“良好且准备就绪”时,为什么不启动这个外部应用程序?真的需要事先启动外部应用程序吗?加载时间长吗?
  • 好吧,外部应用程序需要很长时间才能加载。它基本上必须通过 www 连接到服务器以获取一些信息、协商握手等。我不能让我的应用程序等待所有这些。所以我想尽快启动它并继续其他任务。

标签: java powershell window hidden launching-application


【解决方案1】:

你没有说这个其他应用程序是什么,但我假设它是一个你无法控制的应用程序(即你不能给它一个参数选项来以最小化模式或类似模式启动。)与其隐藏您正在启动的应用程序,您可以在另一个应用程序启动后在您的窗口上使用 toFront() 方法将您的窗口放在另一个前面吗?然后在您想显示另一个窗口时最小化您的窗口?

我是第一个承认这是一个有点笨拙的解决方案,但它可能会根据你所追求的而起作用。

【讨论】:

  • 我喜欢这个主意。而且我怀疑不会有一个干净的解决方案。但是,这里第二个窗口将在一段时间内出现。另外,正如丹尼尔所说,我不知道需要多长时间才能出现。
【解决方案2】:

您无法提供这些参数,但您可以使用支持这些参数的“start”命令(在 cmd 中尝试)。最终您必须使用 cmd.exe shell 调用它,但这会起作用!

【讨论】:

  • 我可以调用 cmd shell,但是如果我使用“start”,我以后将无法激活该窗口。我会吗?
  • 如果你使用 Runtime.getRuntime().exec(),你会怎么做?这只能通过发送窗口消息来完成,这很遗憾地依赖于平台。但是 JNative 是一个很好的工具。您必须使用 Windows API 来查找窗口并将其置于前面。
  • “如果你使用 Runtime.getRuntime().exec(),你会怎么做?”:我不能。这是我问题的第二部分。
猜你喜欢
  • 2014-08-04
  • 2018-04-14
  • 2013-03-22
  • 1970-01-01
  • 1970-01-01
  • 2019-01-05
  • 2018-01-31
  • 2011-06-01
  • 1970-01-01
相关资源
最近更新 更多