我在AutoHotKey中创建了一个脚本。我必须输入要在中打开的整个文件路径 文件browser.i使用了send函数,但它多次传递相同的密钥。我尝试使用函数SetKeyDelay但仍然多次输入密钥。我尝试了其他替代方法,如sendInput和SendEvent,但它仍然无法正常工作。 即使我在两者之间终止脚本,如果控件切换到某个输入框或编辑器,它也会开始将值输入该区域。即使在脚本执行终止后,发送功能也会继续输入密钥。
脚本:
;Open Adobe Acrobat 8.
run Acrobat.exe sleep, 1000
WinWait, Adobe Acrobat Professional,
Sleep, 1000
;Open Compare Documents Window
send, {ALT}A
Sleep, 1000
send, U
WinWait, Compare Documents,
;Enter File Path
IfWinNotActive, Compare Documents,
WinActivate, Compare Documents,
WinWaitActive, Compare Documents,
Sleep, 1000
send, !H
WinWaitActive, Open,,1000
sleep, 1000
SendEvent, "D:\Sample\a.pdf"
它输入类似这样的文字
CCCC ::::: \\ DDDDiiiiii
答案 0 :(得分:0)
要尝试的事情:
将AutoHotkey更新为最新版本。
请勿使用SendEvent
。它允许其他输入在输入时中断文本。请改用SendInput。建议将以下内容放在所有脚本的顶部:
#NoEnv ; Recommended for performance and compatibility with future AutoHotkey releases.
SendMode Input ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir% ; Ensures a consistent starting directory.
SendMode Input
更改Send
以使用SendInput
代替SendEvent
。它缓冲输入并立即发送它,而不是让其他键盘/脚本中断文本。有关详细信息,请参阅:Send。
重新启动计算机并确保没有其他AutoHotkey程序在运行,或者没有运行多个Autohotkey脚本实例。这在测试时尤其是一个问题,因为您可能已多次启动相同的脚本,并且如果线程未正确终止,则可能有多个实例在那里等待激活打开窗口。一旦激活了Open窗口,那么你可能有4个以上的休眠脚本都试图同时输入,这将为你提供你正在描述的输出。