Win+1 至 9 键,仅最小/最大第一个窗口,修饰键用于下一个窗口

Win+1 至 9 键,仅最小/最大第一个窗口,修饰键用于下一个窗口

我经常使用 win+1、win+2、win+3、win+4 ......win+9 键

有没有办法让自动热键执行以下操作?

假设我的任务栏上的位置 9 处有 chrome。

  1. 如果是 chrome 2+ 窗口,WIN+9 只会最大化/最小化堆栈中的第一个窗口
  2. SHIFT+WIN+2 仅最大化/最小化第二个窗口
  3. Ctrl+WIN+3 仅最大化/最小化第三个窗口

在此处输入图片描述

答案1

尝试这样的操作:

#If WinExist("ahk_exe chrome.exe")

    #9:: ; maximize / minimize 1st window in array:
        If !WinExist("ahk_id " chrome_array[1])
            GoSub, Create_chrome_array  
        WinGet, WinState, MinMax, % "ahk_id " chrome_array[1]
        If WinState = -1
            WinMaximize, % "ahk_id " chrome_array[1]
        else
            WinMinimize, % "ahk_id " chrome_array[1]
    return

    +#9:: ; maximize / minimize 2nd window in array:
        If !WinExist("ahk_id " chrome_array[2])
            GoSub, Create_chrome_array  
        WinGet, WinState, MinMax, % "ahk_id " chrome_array[2]
        If WinState = -1
            WinMaximize, % "ahk_id " chrome_array[2]
        else
            WinMinimize, % "ahk_id " chrome_array[2]
    return

    ^#9:: ; maximize / minimize 3rd window in array:
        If !WinExist("ahk_id " chrome_array[3])
            GoSub, Create_chrome_array  
        WinGet, WinState, MinMax, % "ahk_id " chrome_array[3]
        If WinState = -1
            WinMaximize, % "ahk_id " chrome_array[3]
        else
            WinMinimize, % "ahk_id " chrome_array[3]
    return

#If

Create_chrome_array:
    ; Create an array, initially empty:
    chrome_array:= Object()
    ; Get ID list of all opened chrome windows:
    WinGet, ID, list, ahk_exe chrome.exe
    Loop, %id% ; retrieves each ID from the list, one at a time
    {
        this_ID := ID%A_Index%
        chrome_array.Push(this_ID) ; Append this_ID to the array
    }
return

相关内容