Что нового

Ожидание завершения процесса загрузки/обработки

mihayloff

Новичок
Сообщения
14
Репутация
0
Я создаю эмуляцию нажатия клавиш, кнопок в программе, эти действия приводят к всплывающему окну загрузки/обработки документа.
Поскольку все документы весят по разному, то и загрузка/обработка длится по разному - от 0,5 до 2 секунд. Через это время открывшееся окно закрывается.

В это время autoit продолжает выполнять свои действия - нажимать на кнопки. Чего делать в момент этих 0,5-2 секунд мне не надо. То есть мне нужно, чтобы autoit дождался завершения закрытия всплывающего окна и только потом продолжил работать.

Я могу поставить перед этим время ожидания
Код:
Sleep(3000)


И вроде проблема решается.
А если документ будет обрабатываться больше 3-х секунд? А если эти действия будут выполняться на старом компьютере, где обработка будет длиться 10 секунд?
Увеличивать время ожидания тоже не рационально.

Как можно заставить autoit дождаться закрытия всплывающего окна?

Кстати, AutoIt Window Info, даже не удается за это время нажать на всплывающее окно, чтобы узнать его название.
 

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
Без информации об окне сложно что-то советовать, но если это обычное окно, то
Код:
WinWaitClose()
а если там отдельный процесс запускается, то
Код:
ProcessWaitClose()


mihayloff
AutoIt Window Info, даже не удается
Попробуйте wInformer. Запускаете, нажимаете кнопку Start. Когда появится нужное окно, быстро наводите на него курсор и жмёте на клавиатуре Win+Shift.
 
Автор
M

mihayloff

Новичок
Сообщения
14
Репутация
0
Я сейчас попробовал в интернете, так то же самое.
Браузер может загружать страницу с разной скоростью.
А autoit уже начинает "нажимать" на кнопки.
В итоге порядок всех действий слетает.
 

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
mihayloff
действия приводят к всплывающему окну загрузки/обработки документа
Браузер может загружать страницу
Это совсем не одно и то же. Для окна свои функции, для браузера - свои.
И даже для окна браузера и для содержимого браузера функции будут разные.
 
Автор
M

mihayloff

Новичок
Сообщения
14
Репутация
0
Сейчас загрузил в videopad самое большое видео, и нажал AutoIt Window Info, название окна записал, функцию
Код:
WinWaitClose()
добавил.
Но кроме этого, когда окно закрывается, в значке видео еще идет загрузка - проценты от 1% до 100%.
Как это заставить ждать?
 

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
mihayloff
Как это заставить ждать?
Если Au3Info или wInformer смогут определить этот элемент, то можно попробовать функции, относящиеся к данному элементу.
В противном случае
Код:
PixelGetColor()
PixelChecksum()
 
Автор
M

mihayloff

Новичок
Сообщения
14
Репутация
0
Там без окна, в самой программе videopad.
И название файла может быть разным, так что пикселами тут не получится.
 

Вложения

  • 111.jpg
    111.jpg
    190.6 КБ · Просмотры: 21

InnI

AutoIT Гуру
Сообщения
4,922
Репутация
1,432
mihayloff
пикселами тут не получится
И не нужно. Это стандартный "SysListView32". Для работы с ним есть функция
Код:
ControlListView()
Командой "GetText" читаете название нужного пункта. Если в начале названия нет слова "Processing", значит файл обработан.
 
Автор
M

mihayloff

Новичок
Сообщения
14
Репутация
0
InnI сказал(а):
mihayloff
пикселами тут не получится
И не нужно. Это стандартный "SysListView32". Для работы с ним есть функция
Код:
ControlListView()
Командой "GetText" читаете название нужного пункта. Если в начале названия нет слова "Processing", значит файл обработан.

Не понял ничего, ни как использовать
Код:
ControlListView()

ни как читать текст командой "GetText".
Что такое "SysListView32" я тоже не знаю.
Справку смотрел, тоже не понятно.
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
mihayloff [?]
Не понял ничего, ни как использовать ControlListView() ни как читать текст командой "GetText". Что такое "SysListView32" я тоже не знаю. Справку смотрел, тоже не понятно.
В таком случае, о программирование вам лучше забыть и оформить тему в "Стол заказов"
 
Автор
M

mihayloff

Новичок
Сообщения
14
Репутация
0
Garrett сказал(а):
mihayloff [?]
Не понял ничего, ни как использовать ControlListView() ни как читать текст командой "GetText". Что такое "SysListView32" я тоже не знаю. Справку смотрел, тоже не понятно.
В таком случае, о программирование вам лучше забыть и оформить тему в "Стол заказов"
А Вы родились уже со знаниями программирования, ничего не изучали?
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
mihayloff [?]
А Вы родились уже со знаниями программирования, ничего не изучали?
Нет, слава Богу! :smile:
Я родился любознательным!
Помню, как-то раз в детстве, когда я подошёл с очередным вопросом к отцу он сказал мне: "Вот сынок книжные полки, на которых стоят справочники, бери их и ищи ответ на свой вопрос. Что непонятно будет обращайся, подскажу"
Так я научился пользоваться информацией!

В этой теме вам стараются помочь, дают вам направление. Остаётся лишь почитать справку, форум и поработать с кодом.
Однако, вы ничего не хотите делать, ничего не понимаете и не знаете, вы просто ждёте готового решения.

Вот я и написал вам:
Garrett [?]
В таком случае, о программирование вам лучше забыть и оформить тему в "Стол заказов"
 
Автор
M

mihayloff

Новичок
Сообщения
14
Репутация
0
Я готового решения не жду, но можно же понять, что новичку в справке по функции
Код:
ControlListView
объяснение
Высылает команду элементу ListView32
не говорит ничего.
Что такое ListView32 и SysListView32 гуглил. Понял, что это какой-то список, только как он применим к программе videopad, и как его вообще выделить в любой программе - не ясно.

Справка это не учебник. По ней изучать не получается, у меня во всяком случае.
 

Garrett

Модератор
Локальный модератор
Сообщения
3,999
Репутация
967
Код:
; Пример загрузки одного аудиофайла в VideoPad
; VideoPad должен быть запущен
; Папка с файлами предварительно должна быть выбрана в VideoPad (VideoPad запоминает открытую папку)
; Перемещение по папкам не входит в пример

$iNumFileDownload = 19 ; Индекс SysListView начинается с 0...N
$hWin = WinActivate("[REGEXPTITLE:VideoPad]")
WinWait($hWin)
Send("^m")
$hWinDlg = WinWait("[TITLE:Add Files To Your Project; CLASS:#32770]")
ControlListView($hWinDlg, "", "SysListView321", "Select", $iNumFileDownload, $iNumFileDownload)
ControlClick($hWinDlg, "", "Button2")

$hWin = WinActivate("[REGEXPTITLE:VideoPad]")
While StringInStr(ControlListView($hWin, "", "SysListView321", "GetText", 0, 0), "Processing")
	Sleep(10)
WEnd
$sFileName = ControlListView($hWin, "", "SysListView321", "GetText", 0, 0)
MsgBox(64, "", StringFormat("File upload!\n%s", $sFileName))
 
Верх