使用AutoIt打开文件

时间:2011-07-07 12:17:43

标签: autoit

我正在使用AutoIt脚本来自动化我的应用程序。以下是我正在运行的命令:

FileOpenDialog ("File Upload", "C:\Documents and Settings\abhishek.kumar\Desktop\Quadrillion work", "Images (*.jpg;*.bmp)", "","WESTF12433.jpg","" )

Send("{ENTER}")

第一个命令工作,因为它打开文件打开对话框,选择了WESTF12433.jpg文件。现在我想点击打开按钮。我该怎么办?

Send("{ENTER}")无效。

3 个答案:

答案 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}")

简单就是这样!希望它有所帮助。