找回密码
 加入
搜索
查看: 2990|回复: 5

[AU3基础] ControlSend编译后为什么失效?[已解决]

[复制链接]
发表于 2017-6-10 21:55:07 | 显示全部楼层 |阅读模式
本帖最后由 cashiba 于 2017-6-12 20:08 编辑

If WinActive($hWnd) Then
   ControlFocus($hWnd, "", "[CLASS:Edit; INSTANCE:2]")
   ControlSend($hWnd, "", "[CLASS:Edit; INSTANCE:2]", "XM10502")  ;ControlSetText($hWnd, "", "[CLASS:Edit; INSTANCE:2]", "XM10502")
EndIf

如上部分代码
win10系统环境下
AUTOIT_v3.3.15.0-2016.11.15版本
在SCiTE下菜单选择“运行脚本”后能正确执行,在目标编辑框填写指定字符串。
但是编译成exe文件后,点击这个exe文件,运行到填写这个编辑框的步骤时却没有任何反应和动作。
换成ControlSetText也一样没反应。
用窗口工具查看$hWnd值正是指定编辑框控件的句柄,也就是目标编辑框定位也没错误。

问题:
为什么代码编译前能正确运行,编译后反而不能正确运行呢?怎么解决?
发表于 2017-6-11 11:56:31 | 显示全部楼层
WinWaitActive
用这个试试
发表于 2017-6-11 12:46:06 | 显示全部楼层
Win10请在开头处加
#RequireAdmin

评分

参与人数 1金钱 +19 收起 理由
cashiba + 19

查看全部评分

 楼主| 发表于 2017-6-11 14:49:34 | 显示全部楼层
用这个试试
yamakawa 发表于 2017-6-11 11:56

编译前测试正常的话,应该不是获取不到句柄的问题。
而且特意加了consolewrite($hWnd&@crlf)
证实了编译后 ControlSend($hWnd, "", "[CLASS:Edit; INSTANCE:2]", "XM10502") 这个语句中的$hWnd是有效值,非空......
 楼主| 发表于 2017-6-11 14:52:04 | 显示全部楼层
Win10请在开头处加
xlj310 发表于 2017-6-11 12:46

嗯,这个倒有可能....
现在没法测试,隔天加上这句试试,再来反馈结果
先谢了......
 楼主| 发表于 2017-6-12 20:07:58 | 显示全部楼层
Win10请在开头处加
xlj310 发表于 2017-6-11 12:46

加了后好像没问题了,不知道是不是就是这个原因,以及以后还会不会有失效的情况。
因为其它代码编译前后没有这种情况
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-12-22 11:04 , Processed in 0.076653 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表