Ctrl,Alt,Win和Shift通常被称为修饰键。通常它们被组合与其他键如A,=,F5等等的AutoIt如下该键结合的限制。autohotkey没有。
AutoHotkey为何不能RCtrl用作AutoIt,却可以用作单独的热键?我想知道AutoHotkey使用了哪些技巧来实现该目的。AutoHotkey源自AutoIt v2,所以AutoIt v3无法做到这一点不是很奇怪吗?
这在AutoHotkey中有效:RAlt::Run Notepad
,但是以下代码不适用于AutoIt v3(已通过Au3Check检查):
HotKeySet("{RAlt}","RunNotepad")
Func RunNotepad()
Run('notepad.exe')
EndFunc
首先,您的AutoIt代码将运行,然后立即退出。您需要在其中添加循环以保持程序运行。
我不能说AHK的实现,但是通过在Windows api上测试AutoIt几乎可以肯定地使用了(RegisterHotkey),我不能仅仅获得VK_RMENU
密钥。因此,这是Windows的限制,而不是AutoIt的限制。
关于替代实现,以及如何从AutoIt进行此操作,_IsPressed
是最简单的选择。通常,您会_IsPressed
处于一个循环中,但是如果您希望它的行为更像一个循环,HotkeySet
则可以执行以下操作:
#include <Misc.au3>
AdlibRegister(_TestRalt, 20)
While 1
Sleep(10)
WEnd
Func _RunNotepad()
ConsoleWrite("Just pretend I ran notepad" & @LF)
EndFunc ;==>_RunNotepad
Func _TestRalt()
Local Static $hUser32 = DllOpen("user32.dll")
Local Static $fPressed = False
If _IsPressed("A5", $hUser32) Then
$fPressed = True
ElseIf $fPressed Then
_RunNotepad()
$fPressed = False
EndIf
EndFunc ;==>_TestRalt
我怀疑AHK是否可以开箱即用,那么他们正在做一些更复杂的事情,例如键盘挂钩。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句