【问题标题】:AutoHotkey: Script to Toggle Minimize/Maximize WindowAutoHotkey:切换最小化/最大化窗口的脚本
【发布时间】:2021-08-28 16:34:21
【问题描述】:

我只是希望能够在我一直使用的某个全屏应用程序上使用热键最小化和最大化进行切换。我只想将它用于一个应用程序,而不是任何一个具有焦点的应用程序。

我已经阅读了几十种在线执行此操作的方法,但都没有奏效。

我知道我可以使用一些命令:

WinMinimize, A
WinMaximize, A

但我不确定如何将它们串在一起。 在寻找示例时,我在某处想出了这个:

^#n::
IfWinExist, ahk_class Notepad
{
WinGet,WinState,MinMax,ahk_class Notepad
If WinState = -1
   WinMaximize
else
   WinMinimize
}
; else
;   Run, Notepad
Return

但是,这只会最大化我的应用程序,而不是最小化它。也许这是因为应用程序是全屏应用程序,我不知道。

【问题讨论】:

  • 您应该描述您已经尝试过的内容以及它对您的效果如何。见How do I ask a good question?。如果没有您的详细信息,我建议的最好方法是使用 ActivateWindowWinMaximizeWinMinimize
  • @JimU 嗨,谢谢。我已经发布了一个无效的代码示例。
  • 您发布的 ^#n 代码对我有用。我通过以下方式单独对其进行了测试:1)右键单击任务栏上的 AutoHotKey 图标并选择Edit This Script,2)将代码粘贴到其中,替换现有代码,3)再次右键单击 AutoHotKey 图标并选择Reload This Script, 4) 启动记事本,5) 反复按 Control+Win+N - 记事本窗口按预期最大化和最小化。我只运行了一个记事本实例。
  • @JimU 感谢您的提示。我了解如何重新加载和编辑脚本.. 话虽如此,这对于记事本可能很好用,但它不适用于我的全屏游戏。我在原来的帖子中提到过这个应用是全屏的。

标签: autohotkey


【解决方案1】:

您可以在使用WinGet 时通过检查MinMax 的值来最小化和最大化。

; To toggle Citrix remote desktop window by using Function 12 key

F12::
; get MinMax state for the given title and save it to variable MX
WinGet MX, MinMax, YourWindowTitle

; if it is maximized, minimize it
if (MX==1)
    WinMinimize YourWindowTitle
; if it is minimized, maximize it
else if (MX==-1)
    WinMaximize YourWindowTitle

return

此脚本使用 F12 键切换最小化和最大化给定窗口。

【讨论】:

  • 感谢这个漂亮的脚本。它可以很好地最大化,但不会最小化我的游戏。我会再尝试一下并报告。
  • 我能够使用您的部分脚本来获得我想要的东西。谢谢
【解决方案2】:

我能够从另一个网站检索一些信息,这些信息帮助我找到了可能对其他用户有用的答案。当与 AutoHotKey 一起使用时,此脚本将通过以下代码适用于全屏应用程序:

Joy12::
WinGetPos, X, Y, Width, Height, WindowName
if (X == -32000)
WinMaximize, WindowName
else if (X == 0 and Y == 0 and Width == 1920 and Height == 1080)
WinMinimize, Resident Evil 4
WinActivate, Program Manager
return

用户可能需要对代码进行一些小的更改,将Joy12 替换为他们希望使用的任何键,并将WindowName 替换为他们希望使用的窗口名称。用户可能还需要更改以下值:

1920 and Height == 1080

无论他们的全屏分辨率是多少。

【讨论】:

    【解决方案3】:

    过了一会儿,我对计算器有同样的要求!实验我想出了这个:

    ;! is alt
    !c:: ;calculator
    
    IfWinExist Calculator
    {  
      Gosub, process_calc
    } else {
       run calc
    }
    return
    
    process_Calc:
      WinGetPos, x, y,,,Calculator
      if (x = 0) {                ; Calculator is minimized to Taskbar
      WinMinimize Calculator      ;WinMinimize is needed to select Calculator(other Win.... didn't work).
      WinRestore Calculator
    } else {
      WinMinimize Calculator      ; Alt-C now alternates between Minimize/Restore to/from Taskbar
    }
    return
    

    【讨论】:

      【解决方案4】:

      由于某种原因,我在上面发布的旧代码不再有效,但在@Ram 的帮助下,我能够制作出适合这款游戏的东西:

      #SingleInstance Force
      SetWorkingDir %A_ScriptDir%
      if not A_IsAdmin
          Run *RunAs "%A_ScriptFullPath%"
      
      1Joy10::
      ; get MinMax state for the given title and save it to variable MX
      WinGet MX, MinMax, Resident Evil 4
      
      if (MX==-1)
          WinMaximize Resident Evil 4
          WinActivate
      Return
          
      #IfWinActive Resident Evil 4
      1Joy10::
      Send, {ALT DOWN}{TAB}{ALT UP}
      Return
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-10-29
        • 2017-12-25
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2011-04-18
        • 2012-02-29
        • 1970-01-01
        相关资源
        最近更新 更多