从Java启动应用程序处于最小化状态

时间:2009-03-25 21:00:59

标签: java windows

这是我之前提出的问题的后续问题:

start-program-if-not-already-running-in-java

我没有得到一个很好的解决方案(因为似乎没有一个),但我有一个相关的问题:

无论如何使用Java代码(Windows中的.exe,而不是Java应用程序)启动应用程序并使其最小化?或者也许在开始后立即将其最小化?这将解决另一个问题的焦点问题,而已经存在的问题或多或少会自行处理。

再次澄清问题:Java客户端和.exe在Windows中运行,我真的没有能力编写任何包装器或使用JNI mojo或类似的东西。我或多或少需要一个纯Java解决方案。

再次感谢您的帮助,我非常愿意接受一个简单的答案:“这是不可能的。”

3 个答案:

答案 0 :(得分:10)

仅限Windows:

public class StartWindowMinimized {

  public static void main(String[] args) throws IOException {
    if (args.length != 1) {
      System.err
          .println("Expected: one argument; the command to launch minimized");
    }
    String cmd = "cmd.exe /C START /MIN ";
    Runtime.getRuntime().exec(cmd + args[0]);
  }

}

样本用法:

java -cp . StartWindowMinimized notepad.exe
java -cp . StartWindowMinimized cmd.exe

理解所涉及的论点:

cmd /?
START /?

答案 1 :(得分:0)

我对Java的细节并不熟悉,但根据我刚看过的网站,如果你使用的是java.awt.Frame(包括来自Swing的JFrame),你应该使用off函数该帧的名称为setState,它接受Frame.ICONIFIED和Frame.NORMAL作为参数(图标化将是最小化状态)。

How do I minimize a Java application window?

答案 2 :(得分:0)

如果这些应用程序具有命令行开关以使它们开始最小化,那么您可以轻松地使用它们。否则,我不能100%肯定,但我非常怀疑这是可能的。您必须有一些方法来与Windows窗口管理器进行交互,Windows窗口管理器本质上是特定于平台的,因此Java不太可能包含它。总有可能有人编写了第三方库来处理任务,但这对我来说似乎不太可能。