我正在使用AutoIt脚本来自动化我的应用程序。以下是我正在运行的命令:
FileOpenDialog ("File Upload", "C:\Documents and Settings\abhishek.kumar\Desktop\Quadrillion work", "Images (*.jpg;*.bmp)", "","WESTF12433.jpg","" )
Send("{ENTER}")
第一个命令工作,因为它打开文件打开对话框,选择了WESTF12433.jpg文件。现在我想点击打开按钮。我该怎么办?
Send("{ENTER}")
无效。
答案 0 :(得分:6)
发送不是一个好方法,因为它需要关注窗口,这是您无法保证的。根据您发布的内容,我会说最好的方法是:
ControlClick("File Upload", "", "Button1")
编辑以回应评论:
您的问题:fileOpenDialog阻止执行。您需要将其视为AutoIt读取一行,运行它,然后读取下一行。
在这种情况下:AutoIt读取第1行。它为您创建一个FileOpenDialog和WAITS来关闭它。一旦关闭它就会读取下一行,并运行它。
尝试以下操作:创建两个au3文件,并将第一行放在1.au3中,将第二行放在2.au3中。按顺序运行它们,看看会发生什么。由于对话框没有焦点,发送会很困难,但ControlClick版本应该可以工作。
答案 1 :(得分:5)
您没有正确使用FileOpenDialog()
。其目的是与用户进行交互。如果你不需要它,那么首先就没有必要。
它所做的只是返回您已定义的所选文件的名称。你不能只从一开始就将文件路径分配给变量吗?根据{{3}}:
成功:返回所选文件的完整路径。结果 多个选项是“目录|文件1 |文件2 | ...”
答案 2 :(得分:0)
这将永远不会起作用,因为AutoIt不是多线程的。 打开对话框后,它会暂停脚本执行,直到用户单击“确定”为止,因此下一行的Send()函数在完成后才会执行任何操作。
您可以做的就是制作另一个脚本,编译它,然后在打开对话框之前运行它。
Run("clickOpen.exe")
FileOpenDialog ("File Upload", "C:\Documents and Settings\abhishek.kumar\Desktop\Quadrillion work", "Images (*.jpg;*.bmp)", "","WESTF12433.jpg","" )
这将被执行:
WinWaitActive("File Upload")
Send("{ENTER}")
简单就是这样!希望它有所帮助。