我怎样才能使 keyoutput 依赖于 window 鼠标结束的内容?
How can I make the keyoutput dependent on what window the mouse is over?
所以如果鼠标在msedge上,一个键应该有不同的含义。我看过 MouseGetPos 、OutputVarX、OutputVarY、OutputVarWin 函数,但我不知道如何正确应用它。
我想出了一个使用 WinGet command 的解决方案。
您可能还想查阅 WinTitle parameter 上的快速参考。只要命令接受 WinTitle
参数,您就可以传递 window:
- 唯一 ID
- 标题
- 组
- 拥有进程 PID
...等等。
来自 MouseGetPos
的 OutputVarWin
数据将 return 一个唯一的 window ID。要在 WinTitle
参数中使用 window ID,请在其前面加上 ahk_id
(示例如下)。
现在,我的示例使用热键 (Ctrl + Shift + D) 进行触发。您可能有一个条件包含在循环或其他东西中,所以我认为热键声明 (^+D::
) 下方的任何内容都与您最相关。
^+D:: ;User presses Ctrl + Shift + D to fire this routine
MouseGetPos,,,hWindowID
WinGet,szProcess,ProcessName,ahk_id %hWindowID% ;Prefixed with ahk_id so AHK knows it's a unique window ID
if(szProcess="msedge.exe")
MsgBox Mouse is over Edge!
else
MsgBox Mouse isn't over Edge!
return
您可以使用 #IfWinActive
。这样可以确保语句下方的热键仅在某个 window 处于活动状态时才被激活。
注意 1:此指令适用于以下所有内容,除非您以其他方式告诉脚本。
注2:这并不取决于鼠标悬停在哪个window上,而是当前激活了哪个window。
参见:https://www.autohotkey.com/docs/commands/_IfWinActive.htm
我的一个脚本中的示例:
#IfWinActive ahk_class CabinetWClass ;Shortcuts for windows explorer
;Ctrl + numpad + is resize all columns to fit. Make sure this works for ctrl+=.
^=::Send,{LCtrl down}{NumpadAdd}{LCtrl up}
#IfWinActive ;Make sure everything below is not keyed to Windows Explorer
所以如果鼠标在msedge上,一个键应该有不同的含义。我看过 MouseGetPos 、OutputVarX、OutputVarY、OutputVarWin 函数,但我不知道如何正确应用它。
我想出了一个使用 WinGet command 的解决方案。
您可能还想查阅 WinTitle parameter 上的快速参考。只要命令接受 WinTitle
参数,您就可以传递 window:
- 唯一 ID
- 标题
- 组
- 拥有进程 PID
...等等。
来自 MouseGetPos
的 OutputVarWin
数据将 return 一个唯一的 window ID。要在 WinTitle
参数中使用 window ID,请在其前面加上 ahk_id
(示例如下)。
现在,我的示例使用热键 (Ctrl + Shift + D) 进行触发。您可能有一个条件包含在循环或其他东西中,所以我认为热键声明 (^+D::
) 下方的任何内容都与您最相关。
^+D:: ;User presses Ctrl + Shift + D to fire this routine
MouseGetPos,,,hWindowID
WinGet,szProcess,ProcessName,ahk_id %hWindowID% ;Prefixed with ahk_id so AHK knows it's a unique window ID
if(szProcess="msedge.exe")
MsgBox Mouse is over Edge!
else
MsgBox Mouse isn't over Edge!
return
您可以使用 #IfWinActive
。这样可以确保语句下方的热键仅在某个 window 处于活动状态时才被激活。
注意 1:此指令适用于以下所有内容,除非您以其他方式告诉脚本。
注2:这并不取决于鼠标悬停在哪个window上,而是当前激活了哪个window。
参见:https://www.autohotkey.com/docs/commands/_IfWinActive.htm
我的一个脚本中的示例:
#IfWinActive ahk_class CabinetWClass ;Shortcuts for windows explorer
;Ctrl + numpad + is resize all columns to fit. Make sure this works for ctrl+=.
^=::Send,{LCtrl down}{NumpadAdd}{LCtrl up}
#IfWinActive ;Make sure everything below is not keyed to Windows Explorer