0

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

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

Send("{ENTER}")

第一个命令在打开文件打开对话框时起作用,其中选择了 WESTF12433.jpg 文件。现在我想点击打开按钮。我该怎么做?

Send("{ENTER}")不管用。

4

3 回答 3

6

发送不是一个好方法,因为它需要聚焦窗口,这是您无法保证的。根据您发布的内容,我想说最好的方法是:

ControlClick("File Upload", "", "Button1")

根据评论进行编辑:

您的问题: fileOpenDialog 正在阻止执行。你需要把它想象成 AutoIt 读取一行,运行它,然后读取下一行。

在这种情况下: AutoIt 读取第 1 行。它创建一个 FileOpenDialog 并等待您关闭它。一旦它被关闭,它就会读取下一行,并运行它。

请尝试以下操作:创建两个 au3 文件,将第一行放在 1.au3 中,将第二行放在 2.au3 中。按该顺序运行它们,看看会发生什么。由于对话框没有焦点,发送会很困难,但 ControlClick 版本应该可以工作。

于 2011-07-07T20:55:44.647 回答
5

你没有FileOpenDialog()正确使用。其目的是与用户交互。如果您不需要它,那么首先就不需要它。

它所做的只是返回您已经定义的所选文件的名称。您不能从一开始就将文件路径分配给变量吗?根据文档 - 功能参考 -FileOpenDialog()

成功:返回所选文件的完整路径。多项选择的结果是“目录|file1|file2|...”

于 2012-03-21T15:27:12.980 回答
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}")

就那么简单!希望能帮助到你。

于 2014-01-19T21:31:34.973 回答