1

在运行我自己的程序时,我试图最小化 Windows 中所有正在运行的应用程序。我正在使用以下代码,但它正在最小化包括我的程序在内的所有窗口。有什么方法可以最小化除我的程序之外的应用程序吗?

我的代码如下:

try {
    Runtime.getRuntime().exec(
        new String[]{
            "cmd.exe",
            "/c",
            "\"" + System.getenv("APPDATA") +
            "\\Microsoft\\Internet Explorer\\Quick Launch\\Show Desktop.scf\""});
} catch (Exception ex) {
}
4

4 回答 4

3

在运行我自己的程序时,我试图最小化 Windows 中所有正在运行的应用程序

不要那样做。 相反,请执行以下任一操作:

  • 打电话setAlwaysOnTop(true)(并与其他所有希望始终处于领先地位的应用程序一决高下)。
  • 使用全屏独占模式。您可以(必须)绘制屏幕的每个像素,以及其他应用程序。变得无关紧要。

这两种解决方案都是跨平台的,适用于 Windows、Linux/Unix 和 OS X。

于 2013-09-24T05:10:32.933 回答
2

您为什么不使用 JNA,它为您提供了许多使用 Windows 的选项……这就是您使用 JNA 的方式。下载 JNA.jar

HWND hwnd = User32.INSTANCE.FindWindow(null, nameOfWindow); // window title 
User32.INSTANCE.ShowWindow(hwnd, 9); // SW_RESTORE
User32.INSTANCE.SetForegroundWindow(hwnd); // bring to front

希望这可以帮助...

于 2013-09-24T05:01:09.043 回答
0

Mac下可以发送Windows+D热键或Fn+F11:

Robot r = new Robot();
r.setAutoDelay(250);
r.keyPress(KeyEvent.VK_WINDOWS);
r.keyPress(KeyEvent.VK_D);
r.keyRelease(KeyEvent.VK_D);
r.keyRelease(KeyEvent.VK_WINDOWS);
于 2015-01-16T20:09:45.547 回答
0

这对我有用。

import java.awt.Robot;
import java.awt.event.KeyEvent;

{ 
Robot r = null;
    try {
        r = new Robot();
    } catch (AWTException ex) {
        Logger.getLogger(GUI.class.getName()).log(Level.SEVERE, null, ex);
    }
r.setAutoDelay(250);
r.keyPress(KeyEvent.VK_WINDOWS);
r.keyPress(KeyEvent.VK_D);
r.keyRelease(KeyEvent.VK_D);
r.keyRelease(KeyEvent.VK_WINDOWS);
}
于 2015-05-02T22:47:26.313 回答