【问题标题】:Minimize all other applications excluding my own program最小化除我自己的程序之外的所有其他应用程序
【发布时间】:2013-09-24 04:53:51
【问题描述】:

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

我的代码如下:

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

【问题讨论】:

  • 你有没有试过在执行命令后恢复你的程序?
  • 如何恢复我的应用程序
  • 你在用什么?摇摆/AWT/...?
  • 1) 阅读(并实施)所有 When Runtime.exec() won't 的建议。那可能会解决问题。如果不是,它应该提供更多关于失败原因的信息。然后忽略它引用exec 并使用ProcessBuilder 构建Process。还要将String arg 分解为String[] args 以说明本身包含空格的参数。 2) 将catch (Exception e) { ..表单代码修改为catch (Exception e) { e.printStackTrace(); // very informative! ..

标签: java swing process runtime.exec


【解决方案1】:

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

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

  • 致电setAlwaysOnTop(true)(并与其他所有希望始终保持领先的应用一决高下)。
  • 使用Full Screen Exclusive Mode。您可以(必须)绘制屏幕的每个像素,以及其他应用程序。变得无关紧要。

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

【讨论】:

  • 但我的要求是最小化其他应用程序 Mr Andrew
  • 独占全屏是一个可怕的想法。许多新游戏支持“窗口全屏”是有充分理由的!
【解决方案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

希望对你有帮助……

【讨论】:

    【解决方案3】:

    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);
    

    【讨论】:

      【解决方案4】:

      这对我有用。

      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);
      }
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2011-10-05
        • 1970-01-01
        • 2016-08-15
        • 1970-01-01
        • 2019-05-27
        • 2014-06-07
        • 1970-01-01
        相关资源
        最近更新 更多