AutoHotkey:切换脚本 Minimize/Maximize Window

AutoHotkey: Script to Toggle Minimize/Maximize Window

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

我在网上阅读了数十种方法,none 其中有效。

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

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

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

我能够从另一个网站检索到一些信息,这些信息帮助我得出了可能对其他用户有用的答案。当与 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 替换为他们希望使用的 window 的名称.用户可能还必须更改以下值:

1920 and Height == 1080

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

我对计算器也有同样的要求,稍等一下!经过实验,我想到了这个:

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

您可以在使用 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 键切换最小化和最大化给定 window。

出于某种原因,我在上面发布的旧代码不再有效,但在@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