如何将函数参数传递给AutoHotkey的Send命令?
AutoHotkey 按键控制函数写法问题解答
原写法的问题
你提供的代码存在两个关键问题,导致无法正常运行:
- 调用
Interact(Lbutton, 1200)时,Lbutton未加引号,AutoHotkey会将其视为未定义变量,实际传递的是空值,Send命令无法识别要操作的按键。 Send {controlName Down}中的controlName是变量,但AutoHotkey的传统Send语法不会自动解析变量,因此无法将变量值替换为实际按键名。
修正方案
不需要新增参数,只需要对变量传递和解析做两处调整:
- 调用函数时,将按键名以字符串形式传递(加引号)。
- 在Send命令中,用百分号包裹变量名,让AutoHotkey解析变量值。
修正后的完整代码:
Interact(controlName, activationTime) { Sleep 100 ; 短暂停顿 Send {%controlName% Down} ; 解析变量,按住指定按键 Sleep activationTime ; 等待指定毫秒数 Send {%controlName% Up} ; 松开指定按键 Sleep 100 ; 短暂停顿 } OpenMap() { Interact("Lbutton", 1200) ; 传递字符串形式的按键名 }
补充说明
如果使用AutoHotkey v2版本,语法会更简洁,无需百分号包裹变量,直接用表达式形式即可:
Interact(controlName, activationTime) { Sleep 100 Send "{controlName} Down" Sleep activationTime Send "{controlName} Up" Sleep 100 } OpenMap() { Interact("Lbutton", 1200) }
内容的提问来源于stack exchange,提问作者Razzupaltuff
相关产品推荐
相关产品推荐

