这是我之前提出的问题的后续问题:
start-program-if-not-already-running-in-java
我没有得到一个很好的解决方案(因为似乎没有一个),但我有一个相关的问题:
无论如何使用Java代码(Windows中的.exe,而不是Java应用程序)启动应用程序并使其最小化?或者也许在开始后立即将其最小化?这将解决另一个问题的焦点问题,而已经存在的问题或多或少会自行处理。
再次澄清问题:Java客户端和.exe在Windows中运行,我真的没有能力编写任何包装器或使用JNI mojo或类似的东西。我或多或少需要一个纯Java解决方案。
再次感谢您的帮助,我非常愿意接受一个简单的答案:“这是不可能的。”
答案 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作为参数(图标化将是最小化状态)。
答案 2 :(得分:0)
如果这些应用程序具有命令行开关以使它们开始最小化,那么您可以轻松地使用它们。否则,我不能100%肯定,但我非常怀疑这是可能的。您必须有一些方法来与Windows窗口管理器进行交互,Windows窗口管理器本质上是特定于平台的,因此Java不太可能包含它。总有可能有人编写了第三方库来处理任务,但这对我来说似乎不太可能。