AHK中检查剪贴板是否等于指定数字?代码执行异常求助
问题分析与解决方案
哦,这个问题的核心原因其实很简单——你把AHK里IfEqual命令的参数顺序搞反啦!
1. IfEqual的语法错误
AHK中IfEqual的正确格式是:
IfEqual, 变量名, 要比较的值
而你写的是:
IfEqual 30684047, %var%
这相当于把数字30684047当作一个变量名(这个变量根本不存在,值为空),和var的内容比较,当然永远不相等,直接走else分支了。
2. 额外的坑:剪贴板可能带隐形空白字符
另外,从单元格复制内容时,有时候会附带换行符或者空格(尤其是Excel这类表格软件),即使你用MsgBox看起来是正确的数字,但实际剪贴板里多了隐形字符,也会导致匹配失败。所以最好先对剪贴板内容做去空白处理。
修正后的代码
; 复制单元格内容 var := Trim(clipboard) ; Trim去掉前后的空格、换行等空白字符 Sleep, 1000 WinActivate, doesntmatter - Internet Explorer ; 修正IfEqual的参数顺序 IfEqual, var, 30684047 { Sleep, 500 Send, inform } else { MsgBox, nope } Return
补充:更推荐的现代写法
其实AHK v1里更推荐用表达式风格的比较,可读性更强,也不容易搞混顺序,比如:
if (var = "30684047") ; 加引号把数字当字符串比较,避免类型匹配问题 { Sleep, 500 Send, inform } else { MsgBox, nope }
内容的提问来源于stack exchange,提问作者Simo Todorov
相关产品推荐
相关产品推荐

