autohotkey - tecla de atalho para alternar entre Minimizar e Restaurar para a janela selecionada atual

1

Eu gostaria de criar uma única tecla de atalho para alternar entre Minimizar e Restaurar para a janela selecionada atual (janela do explorador, janela de programa ou qualquer janela), mas preciso alternar para min e restaurar exatamente a mesma janela. Se nenhuma janela estiver selecionada, não faça nada.

Até agora eu fiz isso

#s::
if (!CW)
    {
    WinGetPos, winWidth, winHeight, , , A

    if ( winWidth == -8 and winHeight == -8)
        {
        WinGet, CW
        WinMinimize, CW
        }
} else
{
    WinRestore, CW
}

Não funciona

Eu também tentei isso,

#s::
if (!%active_id%)
{
    WinGet, active_id, ID, A
    WinMinimize, ahk_id %active_id%
}
else
{
WinRestore, ahk_id %active_id%
}

Minimize a janela na primeira vez que a tecla de atalho é pressionada e na segunda vez que a tecla de atalho é pressionada em vez de restaurar as janelas, ela simplesmente minimiza outras janelas e assim por diante. por favor me ajude, eu preciso de uma alternância

Eu peguei este exemplo de outro post procurando por um toggle,

#s::
WinGet MX, MinMax, A
If MX
WinRestore A
Else WinMaximize A
return

essa alternância funciona, mas apenas entre Maximizar e Restaurar as mesmas janelas, não quero alternar entre Minimizar e Restaurar a mesma janela, acho que não preciso apenas da alternância, mas de uma maneira de armazenar a ID do Windows, ele pode lembrar qual janela restaurar quando a janela for desativada.

Depósitos avançados.

    
por litu16 11.11.2016 / 02:45

2 respostas

1
#s::
; If no window is already selected 
; or the selected window doesn't exist anymore, 
; select the currently active window and minimize it:
IfWinNotExist, ahk_id %selected_id%
{
    If (IsWindow(WinExist("A")) || WinActive("ahk_class ArtRage 3"))
        WinGet, selected_id, ID, A
    else
    {
        MsgBox, No window selected
            return
    }
}
WinGet, WinState, MinMax, ahk_id %selected_id%
    If WinState = -1    ; the selected window is minimized  
    {
        WinRestore
        selected_id := ""       
    }
    else
        WinMinimize
return

; This checks if a window is, in fact a window,
; as opposed to the desktop or a menu, etc.
IsWindow(hwnd){
   WinGet, s, Style, ahk_id %hwnd%
   return s & 0xC00000 ? (s & 0x100 ? 0 : 1) : 0
}
    
por 18.11.2016 / 20:15
1
    #s::
    select_window:
; If no window is already selected or the selected window doesn't exist anymore, 
; select the currently active window:
IfWinNotExist, ahk_id %selected_id%
{
    If IsWindow(WinExist("A"))
        WinGet, selected_id, ID, A
    else
    {
        MsgBox, No window selected
            return
    }
}
WinGet, WinState, MinMax, ahk_id %selected_id%
    If WinState = -1    ; the window is minimized
        WinRestore ahk_id %selected_id%
    else
        WinMinimize, ahk_id %selected_id%
return

; select another window to toggle its state:
    !#s::
selected_id := ""
GoSub, select_window    ; or: GoSub, #s
return

; This checks if a window is, in fact a window,
; as opposed to the desktop or a menu, etc.
IsWindow(hwnd){
   WinGet, s, Style, ahk_id %hwnd%
   return s & 0xC00000 ? (s & 0x100 ? 0 : 1) : 0
}
    
por 11.11.2016 / 07:02