[已解决]请教如何用controlclick双击该窗口中的指定文件
本帖最后由 cnergao 于 2010-2-27 10:42 编辑问题已经解决!谢谢各位提供有用的信息和帮助。答案在15楼
我现在用
WinWait("打开")
ControlListView("打开", "", "SysListView321", "Select", $j) ;选中图片
ControlSend("打开", "", "Button2", "{ENTER}") ;按回车键打开这段代码来完成上面的打开操作。
问题是:运行时间久了有时候速度一卡。没有选中图片之前就按回车键了。然后程序就停在“打开”窗口这个位置不动了。
我现在想换种思路。 如下:
WinWait("打开")
controlclick("打开","","SysListView321","left",2);双击直接打开。
现在的需要解决的问题是。如何才能确定要双击的文件名。即文件位置(文件很多,文件名也不同,不要相同文件名)
请问有什么办法? WinWait("打开")
ControlListView("打开", "", "SysListView321", "Select", $j) ;选中图片
ControlSend("打开", "", "Button2", "{ENTER}") ;按回车键打开
选中图片之后,调用GUICtrlRead读取文件名框的信息。 不等于$j的时候, 重新执行选取操作。 你可以换个思路,不要去双击指定文件,而去直接在文件名那个input里面写上(当然程序自己去做这个步骤)指定的文件名就好了,同样,如果文件路径不对也没关系,直接在文件名那个input里面写上指定文件的完整路径加文件名就好了。。 你可以换个思路,不要去双击指定文件,而去直接在文件名那个input里面写上(当然程序自己去做这个步骤)指定 ...
sanmoking 发表于 2010-2-25 17:47 http://www.autoitx.com/images/common/back.gif
这个思路也是可行的。不过我的文件名不一样。有些没规律。有些有规律。有规律的文件名还好写。没规律太多的时候就不好写上去了。。
就是因为这样,我才用ControlListView("打开", "", "SysListView321", "Select", $j) ;
这条语句不受名称影响。只有位置标志。 这个手动操作的时候是可以双击直接打开的。我想是不是可以写条语句来完成这个操作?如果可以的话速度和准确率该没有什么问题。我上面的哪几条语句。速度一快,就不准了。整个程序傻了。停在“打开”窗口不动了 这是操作什么的,必须用这种模拟操作吗? 上传图片,是需要这种模拟操作 本帖最后由 afan 于 2010-2-26 11:21 编辑
回复 7# cnergao
先 _FileListToArray 读取此目录的文件名到数组,再如 3#所说操作 回复cnergao
先 _FileListToArray 读取此目录的文件名到数组,再如 2#所说操作
afan 发表于 2010-2-25 23:26 http://www.autoitx.com/images/common/back.gif
我觉得还是直接在文件名的input里面写上文件名比较精确。。。当然 先 _FileListToArray 读取此目录的文件名到数组 怎么会有这么多稀奇古怪的操作.... 我觉得还是直接在文件名的input里面写上文件名比较精确。。。当然 先 _FileListToArray 读取此目 ...
sanmoking 发表于 2010-2-26 09:48 http://www.autoitx.com/images/common/back.gif
没错,我看错了楼。。。:face (32): 没错,我看错了楼。。。
afan 发表于 2010-2-26 11:22 http://www.autoitx.com/images/common/back.gif
是不是工作太晚,眼睛累坏了,不好使了? 是不是工作太晚,眼睛累坏了,不好使了?
gapkiller 发表于 2010-2-26 11:31 http://www.autoitx.com/images/common/back.gif
回帖时忘了看楼,只记得有只熊在那扭... 结合各位的思路。我再调整了一下。
WinWait("打开")
ControlSetText("打开","","Edit1",$FileList[$n]);先读取文件数到数组
ControlClick("打开", "", "Button2", "left");点击“打开”窗口上的打开按钮
这样做一下调整后速度快多了。中间的sleep 全省掉了。。
不过还有一个问题。可不可以全弄成后台操作?因为这个操作要不停的跳出窗口。 本帖最后由 cnergao 于 2010-2-27 14:13 编辑
最后确定的代码:供大家参考修改。有不足的地方请提出。谢谢。
第一种: WinWait($title3)
While WinExists($title3)
ControlSetText($title3, "", "Edit1", $FileList[$n]);在输入框中输入要打开的文件名
$z = ControlGetText($title3, "", "Edit1")
If $z == $FileList[$n] Then
ControlClick($title3, "", "Button2", "left");点击打开按钮
EndIf
WEnd
经这种好象也会停住。死循环.
第二种: WinWait($title3)
Do
ControlSetText($title3, "", "Edit1", $FileList[$n])
ControlClick($title3, "", "Button2", "left")
Until Not WinExists($title3)
页:
[1]