我编写了以下代码,以重新映射第4和第5个鼠标按钮以向上和向上滚动。向下滚动:
XButton2::
While GetKeyState("XButton2","P")
{
Send {WheelUp 1}
Sleep 120
}
return
XButton1::
While GetKeyState("XButton1","P")
{
Send {WheelDown 1}
Sleep 120
}
return
如果光标在活动窗口上,一切正常。
但是,当我单击XButton1(第4个鼠标按钮)或XButton2(第5个鼠标按钮)并将光标移到非活动窗口时,有时会将默认操作发送到该窗口。
例如,如果光标位于Chrome(非活动状态)且活动窗口为任务管理器,则会发送默认的“页面返回”操作,而不是在脚本“向下滚动”中指定,但是当我点击Chrome时并使其活跃,一切正常
有没有办法只禁用默认操作?那么,如果你没有按住按钮(While GetKeyState("XButton1","P")
),它什么都不做?
答案 0 :(得分:1)
试试这个。它使热键仅在某些窗口处于活动状态时工作,如果不是则返回任何内容。我没有额外的鼠标按钮所以我用普通的键盘键测试它,它工作。
loop
{
sleep,50
#if WinActive("ahk_exe chrome.exe") or WinActive("ahk_exe explorer.exe") ;;hotkeys work only if chrome.exe or explorer.exe is active
{
XButton2::
While GetKeyState("XButton2","P")
{
Send {WheelUp 1}
Sleep 120
}
XButton1::
While GetKeyState("XButton1","P")
{
Send {WheelDown 1}
Sleep 120
}
}
#if ! WinActive("ahk_exe chrome.exe") ;;if chrome isn't active XButton1 and XButton2 return nothing
{
XButton1::return
XButton2::return
}
}