所需的行为是让鼠标滚动浏览工作区中所有打开的窗口,例如发出 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)
}
这只需要第一次向上/向下滚动操作,所以我无法滚动多个窗口?
通配符(*):即使有额外的修饰符也会触发热键(在这种情况下 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)
}