autohotkey v2 窗口最大化/最小化切换热键失败

问题描述 投票:0回答:1

为什么这段代码会随机失败?它将持续工作,然后在某个看似随机的时间冻结(窗口最大化或最小化),要求我选择“任何窗口”才能使其再次开始工作。

它应该通过 lCtrl+波浪号切换最大化/最小化网络浏览器(假设它是打开的)。我会随机尝试通过 lctrl+1 切换记事本时遇到同样的问题。

<^`::{
    if not WinActive("ahk_exe chrome.exe"){
        WinActivate("ahk_exe chrome.exe")
    }
    else {
        WinMinimize("ahk_exe chrome.exe")
    }
}

不要链接 v1 代码。

我尝试明确地写出来,但没有区别,即“如果不是 winactive then else if winactive then else”

windows automation autohotkey autohotkey-2
1个回答
0
投票

WinActive()
顾名思义,检查窗口是否处于活动状态,这通常与检查窗口或进程是否存在的
WinExist()
混合在一起。另一件事是这不是切换脚本。它仅检查获胜是否有效。所以这是解决方案:

#Requires AutoHotkey v2.0
#SingleInstance Force

CHROME_HANDLE := "ahk_exe chrome.exe"
Toggle := WinActive(CHROME_HANDLE)

<^`::{
    if(not WinExist(CHROME_HANDLE)){ ;Check if chrome is still alive
        return
    }

    global Toggle
    if(!Toggle){
        WinRestore(CHROME_HANDLE) ;Restores the last size
        Toggle := true
    }else{
        WinMinimize(CHROME_HANDLE)
        Toggle := false
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.