Criei o script a seguir na tentativa de ter uma tecla de atalho que inicie a calculadora, ou, se já estiver aberta, 'ative' a janela, ou, se já estiver ativada, feche a calculadora. Tudo funciona bem, aceite que, se a calculadora for minimizada, não será possível restaurá-la. Pelo que posso dizer, fiz tudo certo. Eu não entendo qual é o problema. A documentação do AHK afirma que, se você chamar o WinActivate em uma janela minimizada, ele primeiro restaurará essa janela, mas isso é mentira. Se eu descomentar a linha MsgBox, ainda recebo uma mensagem quando a janela é minimizada, mas não tenho como fazer mais nada.
If WinExist("Calculator") {
;MsgBox Calculator Exists.
IfWinActive
WinKill
Else
WinGet, winState, MinMax
If (winState = -1)
WinRestore, Calculator
WinActivate, Calculator
}
Else {
run calc
WinActivate, Calculator
}
Responder1
Em qual sistema operacional você está? Seu código funciona para mim no Win10 se eu adicionar ahk_class ao 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
}
Responder2
Isso é o que eu tenho que trabalhar para mim.
;------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
Eu costumo 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
Mas essa solução exigia que muitas vezes eu pressionasse a tecla de atalho duas vezes. Uma vez para torná-lo ativo (se não estiver no topo, ainda é visível) e novamente para minimizá-lo. Espero que isso ajude alguém.