我想要做的是创建一个脚本,使我能够在等待时禁用PgDn或PgDn键的效果(这样它就不会立即捕获热键,所以就没有覆盖),同时在等待期间对程序没有任何影响。
PgDn示例场景:在必须按住该键才能激活(例如)MsgBox 的 3 秒内,它不得导致浏览器窗口等接受PgDn输入。也就是说,我不希望在按下该PgDn键时网页向下滚动。
这是我迄今为止的代码。
~PgDn::
If PgDnIsPressed
return
PgDnIsPressed := true
SetTimer, WaitForRelease, 3000
return
~PgDn Up::
SetTimer, WaitForRelease, Off
PgDnIsPressed := false
return
WaitForRelease:
SetTimer, WaitForRelease, Off
msgbox Working
return
它可以工作,但是必须以任何方式滚动网页才行。
PgDn编辑:我还运行了以下注册表脚本来禁用和键的操作PgUp:
Windows Registry Editor Version 5.00
[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
"Scancode Map"=hex:00,00,00,00,00,00,00,00,03,00,00,00,00,00,49,e0,00,00,51,e0,00,00,00,00
但现在看来 AHK 也不会接受PgDn和PgUp键,即使 Windows 也不会接受。
这个想法是只让 AHK 获取输入。
答案1
以下代码将允许您执行您所描述的操作:
hotkey, $pgDn, keyDelayer
hotkey, $pgUp, keyDelayer
keyDelayer:
sleep 3000
thisHotkey := regExReplace(a_thisHotkey, "[^0-9A-Za-z]")
while getKeyState(thisHotkey, "p")
send {%thisHotkey%}
return
如果按住PgDn或 的时间少于三秒,则不会发生任何事情。一旦按住或时间超过三秒,按键就会开始反复发送自身信息,直到松开为止。PgUpPgDnPgUp