【问题标题】:Opening a file using AutoIt使用 AutoIt 打开文件
【发布时间】:2011-07-07 12:17:42
【问题描述】:

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

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

Send("{ENTER}")

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

Send("{ENTER}") 不工作。

【问题讨论】:

  • 所以等等...你想创建一个对话框然后在下一行自动执行?
  • XY-problemthis 是否按预期工作(将文件路径和 *.jsxbin 替换为 *.jpg)?

标签: autoit


【解决方案1】:

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

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

编辑以响应 cmets:

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

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

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

【讨论】:

  • 垫子是对的。如果您可以获得控件 ID,ControlClick 始终是最佳选择。设置文本使用 ControlSetText()。
【解决方案2】:

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

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

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

【讨论】:

    【解决方案3】:

    这永远不会起作用,因为 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}")
    

    就这么简单!希望对您有所帮助。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-10-25
      • 1970-01-01
      • 1970-01-01
      • 2013-08-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多