Autohotkey 如何强制Windows忽略自动热键,而将该热键直接传递给活动窗口?

Autohotkey 如何强制Windows忽略自动热键,而将该热键直接传递给活动窗口?,autohotkey,Autohotkey,My cPanel有一个文本编辑器,允许使用Ctrl-Alt-Up、Ctrl-Alt-Down、Ctrl-Alt-Right和Ctrl-Alt-Left实现多光标功能。不幸的是,Windows具有这些组合键的默认热键,这些组合键可以旋转屏幕上的显示。当我试图在文本编辑器中使用这些组合键时,Windows会在它们到达活动窗口之前劫持它们 我首先搜索了一下,看看是否有任何简单的方法可以关闭特定的Windows默认热键。我的搜索只显示关闭所有热键的结果。然后我决定下载自动热键,看看是否可以编写一个脚本

My cPanel有一个文本编辑器,允许使用Ctrl-Alt-Up、Ctrl-Alt-Down、Ctrl-Alt-Right和Ctrl-Alt-Left实现多光标功能。不幸的是,Windows具有这些组合键的默认热键,这些组合键可以旋转屏幕上的显示。当我试图在文本编辑器中使用这些组合键时,Windows会在它们到达活动窗口之前劫持它们

我首先搜索了一下,看看是否有任何简单的方法可以关闭特定的Windows默认热键。我的搜索只显示关闭所有热键的结果。然后我决定下载自动热键,看看是否可以编写一个脚本来实现我想要做的事情。下面是一些例子;我将坚持按Ctrl-Alt-Right,从四个选项中选择一个:

在所有4次尝试中,第一个代码块都是相同的:

尝试1:热键正确绕过Windows默认显示旋转操作,并将击键发送到Opera中的文本编辑器。但是,文本编辑器在光标所在的位置输入字符串。文本编辑器中没有Ctrl-Alt-R热键,也不能是Windows默认热键。所以它发送Ctrl-Alt-R到Opera,Opera什么也不做。然后,它会发送打印出来的信息。这是4次尝试中最成功的一次,但肯定没有达到预期的结果:

^!Right::
Send, ^!Right
return
尝试2:仅与SendPlay而不是Send的1不同。热键再次正确绕过Windows默认显示旋转操作。但是,文本编辑器似乎根本不执行任何操作:

^!Right::
SendPlay, ^!Right
return
^!Right::
SendPlay, ^!{Right}
return
尝试3:返回到刚才发送,但现在右二角用大括号括起来。现在,热键甚至没有绕过Windows默认的显示旋转动作,这真的让我难以置信,因为我认为尝试1的结果证明找到了活动的Opera窗口,并且按键Ctrl-Alt-Right被^正确读取!就在第一行。我很困惑为什么在第二行加上大括号会否定这些看起来应该已经发生的事情:

^!Right::
Send, ^!{Right}
return
尝试4:仅与SendPlay而非Send的3不同。热键再次正确绕过Windows默认显示旋转操作。但是,文本编辑器似乎根本不执行任何操作:

^!Right::
SendPlay, ^!Right
return
^!Right::
SendPlay, ^!{Right}
return
总结如下:


这是最后一个问题,根据这张表,我觉得发送肯定是一条路要走。如果“尝试3”表明大括号导致显示旋转,如何将此击键发送到活动窗口而不被窗口劫持?显然,当不使用花括号时,IfWinActive Opera工作正常。可能还有另一条指令完全阻止或绕过Windows的默认操作?

如果您不希望使用屏幕旋转功能,可以在图形面板中禁用此功能。我相信它与英特尔图形应用程序有关。它可能类似于,右键单击桌面,选择图形选项,选择热键,然后单击禁用。这只是猜测,因为我使用的计算机上没有,但我以前在别人的计算机上遇到过

至于热键,你需要在单词右边加上大括号,否则它只会发送单个字符,就像实际键入一样。另一个问题是,你需要在热键前面加一个$,因为它是自引用的;也就是说,它发送的击键与激活它的击键相同

如果您还没有机会查看帮助文件,我绝对推荐它。

英特尔图形正是问题所在。我不知道你怎么知道的。不管怎样,它就像一个魅力!感谢您提供有关自引用的添加信息。在Windows 10中,停止Ctrl+Alt+right和Ctrl+Alt+Left屏幕旋转非常有用。尽管Gpedit.msc在其他地方进行了编辑以关闭热键,但这完全起作用。Windows 10教育。现在VirtualWin热键像冠军一样工作。