AutoHotKey 在任务栏上使用鼠标滚轮滚动打开的窗口

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

所需的行为是让鼠标滚动浏览工作区中所有打开的窗口,例如发出 AltTab 或 ShiftAltTab。我使用 SetTimer,这样我可以在给定时间内滚动浏览多个窗口,而不仅仅是 1 个窗口,然后在不活动延迟后,所选窗口最大化。这是我尝试创建的脚本

#Requires AutoHotkey v2

#HotIf MouseIsOver("ahk_class Shell_TrayWnd")
{
WheelUp::
{
  Send "{ALT DOWN}{TAB}"
  SetTimer ReleaseAlt, 1000
}

WheelDown::
{
  Send "{ALT DOWN}{SHIFT}{TAB}"
  SetTimer ReleaseAlt, 1000
}


ReleaseAlt() 
{
  static idle := 1000
  if (A_TimeIdle >= idle)
    Send "{ALT UP}"
}

}

MouseIsOver(WinTitle) {
    MouseGetPos ,, &Win
    return WinExist(WinTitle " ahk_id " Win)
}

这只需要第一次向上/向下滚动操作,所以我无法滚动多个窗口?

windows scripting autohotkey
1个回答
1
投票

通配符(*):即使有额外的修饰符也会触发热键(在这种情况下 Alt 和/或 Shift) 被按住。

#Requires AutoHotkey v2.0

    
#HotIf MouseIsOver("ahk_class Shell_TrayWnd") || WinActive("Task Switching") 

    *WheelUp::
    {
        Send "{SHIFT UP}{ALT DOWN}{TAB}"
        SetTimer ReleaseKeys, 1000
    }

    *WheelDown::
    {
        Send "{ALT DOWN}{SHIFT DOWN}{TAB}"
        SetTimer ReleaseKeys, 1000
    }

#HotIf

ReleaseKeys() 
{
    static idle := 1000
    if (A_TimeIdle >= idle)
        Send "{ALT UP}{SHIFT Up}"
}

MouseIsOver(WinTitle) {
    MouseGetPos ,, &Win
    return WinExist(WinTitle " ahk_id " Win)
}
© www.soinside.com 2019 - 2024. All rights reserved.