最小化除我自己的程序之外的所有其他应用程序

时间:2013-09-24 04:53:52

标签: java swing process runtime.exec

我正在尝试在运行自己的程序时最小化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 个答案:

答案 0 :(得分:3)

  

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

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

  • 致电setAlwaysOnTop(true)(并将其与其他希望始终位于最佳状态的应用程序一起展开。)
  • 使用Full Screen Exclusive Mode。你必须(必须)绘制屏幕的每个像素,其他应用程序。变得无关紧要。

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

答案 1 :(得分: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

希望这会有所帮助......

答案 2 :(得分: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);

答案 3 :(得分: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);
}