Autohotkey no restaurará/activará una ventana minimizada

Autohotkey no restaurará/activará una ventana minimizada

He creado el siguiente script en un intento de tener una tecla de acceso rápido que inicie la calculadora o, si ya está abierta, "active" la ventana o, si ya está activada, cierre la calculadora. Todo funciona bien, acepte que si la calculadora está minimizada no puede restaurarla. Por lo que puedo decir he hecho todo bien. No entiendo cuál es el problema. La documentación de AHK afirma que si llama a WinActivate en una ventana minimizada, primero restaurará esa ventana, pero eso es mentira. Si descomento la línea MsgBox, todavía recibo un mensaje cuando la ventana está minimizada, pero no puedo hacer nada más.

If WinExist("Calculator") {
;MsgBox Calculator Exists.
IfWinActive
    WinKill
Else
    WinGet, winState, MinMax
    If (winState = -1)
        WinRestore, Calculator
    WinActivate, Calculator
}
Else {
    run calc
    WinActivate, Calculator
}

Respuesta1

¿En qué sistema operativo estás? Su código me funciona en Win10 si agrego ahk_class al título:

If WinExist("Calculator ahk_class ApplicationFrameWindow") 
{
    ;MsgBox Calculator Exists.
    IfWinActive
        WinClose
    Else
    {
        WinGet, winState, MinMax
        If (winState = -1)
        {
            WinRestore
            WinActivate
        }
    }
}
Else 
{
    run calc
    WinWait, Calculator
    WinActivate
}

Respuesta2

Esto es lo que tengo para trabajar para mí.

;------hotkey to open/close explorer------
^LWin:: ;control and leftwindows
if WinExist("ahk_class ActualTools_TabbedExplorerContainerWindow"){ ; if the window exists
    if WinActive("ahk_class ActualTools_TabbedExplorerContainerWindow") or WinActive("ahk_exe Explorer.EXE")
        WinMinimize, ahk_class ActualTools_TabbedExplorerContainerWindow 
    else{
        WinActivate ; otherwise make it the active window
    }
}else
    run, explorer.exe ;otherwise not open, open explorer
return

Yo suelo usar:

;------hotkey to open/close explorer------
^LWin:: ;control and leftwindows
;WinGetClass, Clipboard, A ;Use this to get the name(class?) of the window you want the script to open. https://stackoverflow.com/questions/45642727/what-is-ahk-class-how-can-i-use-it-for-window-matching
if WinExist("ahk_class ActualTools_TabbedExplorerContainerWindow"){ ; if the window exists
        WinGet, state, MinMax ;get the state of the window. is it maximized or minimized. this could be part of the issue
        If state >= 0 ; if its not minimized, minimize it
            WinMinimize
        else
            WinActivate ; otherwise make it the active window
}else
    Run, Explorer.exe ;otherwise not open, open explorer
return

Pero esta solución requirió que a menudo tuviera que presionar la tecla de acceso rápido dos veces. Una vez para activarlo (si no estaba en la parte superior, incluso todavía es visible) y luego otra vez para minimizarlo. Espero que esto ayude a alguien.

información relacionada