AHK:运行脚本时禁用 PgDn 和 PgUp 键

AHK:运行脚本时禁用 PgDn 和 PgUp 键

我想要做的是创建一个脚本,使我能够在等待时禁用PgDnPgDn键的效果(这样它就不会立即捕获热键,所以就没有覆盖),同时在等待期间对程序没有任何影响。

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 也不会接受PgDnPgUp键,即使 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

相关内容