如果光标位于非活动窗口上,则Autohotkey会发送默认按钮操作

时间:2018-04-23 13:48:59

标签: autohotkey

我编写了以下代码,以重新映射第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")),它什么都不做?

1 个答案:

答案 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
  }
 }