Открытие файла с помощью AutoIt - PullRequest
0 голосов
/ 07 июля 2011

Я использую скрипт 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 ]

6 голосов
/ 08 июля 2011

Передача не является хорошим методом, поскольку требует фокусировки окна, что вы не можете гарантировать. Из того, что вы опубликовали, я бы сказал, что лучший способ будет таким:

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

Редактировать в ответ на комментарии:

Ваша проблема: fileOpenDialog блокирует выполнение. Вы должны думать об этом, как будто AutoIt читает строку, запускает ее, а затем читает следующую.

В этом случае: AutoIt читает строку 1. Он создает FileOpenDialog и ждет, пока вы его не закроете. После закрытия он читает следующую строку и запускает ее.

Попробуйте следующее: создайте два файла au3 и поместите первую строку в 1.au3, а вторую - в 2.au3. Запустите их в таком порядке и посмотрите, что произойдет. Передача будет бороться, поскольку у диалога нет фокуса, но версии ControlClick должны работать.

5 голосов
/ 21 марта 2012

Вы не используете FileOpenDialog() правильно. Его целью является взаимодействие с пользователем. Если вам это не нужно, то в этом нет необходимости.

Все, что он делает - возвращает имена выбранных вами файлов, которые вы уже определили. Вы не можете просто назначить путь к файлу переменной с самого начала? Согласно Документация - Справочник по функциям - FileOpenDialog():

Успех: возвращает полный путь к выбранному файлу (файлам). Результаты для множественный выбор «Каталог | файл1 | файл2 | ...»

0 голосов
/ 20 января 2014

Это никогда не будет работать, потому что AutoIt не является многопоточным.После того, как вы откроете диалоговое окно, он приостанавливает выполнение скрипта до тех пор, пока пользователь не нажмет ok, поэтому функция 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}")

Все просто!Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...