cashiba 发表于 2017-6-10 21:55:07

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

本帖最后由 cashiba 于 2017-6-12 20:08 编辑

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

问题:
为什么代码编译前能正确运行,编译后反而不能正确运行呢?怎么解决?

yamakawa 发表于 2017-6-11 11:56:31

WinWaitActive用这个试试

xlj310 发表于 2017-6-11 12:46:06

Win10请在开头处加#RequireAdmin

cashiba 发表于 2017-6-11 14:49:34

用这个试试
yamakawa 发表于 2017-6-11 11:56 http://www.autoitx.com/images/common/back.gif
编译前测试正常的话,应该不是获取不到句柄的问题。
而且特意加了consolewrite($hWnd&@crlf)
证实了编译后 ControlSend($hWnd, "", "", "XM10502") 这个语句中的$hWnd是有效值,非空......

cashiba 发表于 2017-6-11 14:52:04

Win10请在开头处加
xlj310 发表于 2017-6-11 12:46 http://www.autoitx.com/images/common/back.gif
嗯,这个倒有可能....
现在没法测试,隔天加上这句试试,再来反馈结果
先谢了......
{:face (332):}

cashiba 发表于 2017-6-12 20:07:58

Win10请在开头处加
xlj310 发表于 2017-6-11 12:46 http://www.autoitx.com/images/common/back.gif
加了后好像没问题了,不知道是不是就是这个原因,以及以后还会不会有失效的情况。
因为其它代码编译前后没有这种情况
页: [1]
查看完整版本: ControlSend编译后为什么失效?[已解决]