Что нового

[Автоматизация] Нужна помощь

andrushkiv72

Новичок
Сообщения
1
Репутация
0
Версия AutoIt: v3.3.14.2

Au3Record v3.3.9.5

Описание: Записаные кодером действия MouseClick и клавишей.

Код:
#region --- Au3Recorder generated code Start (v3.3.9.5 KeyboardLayout=00000409) ---

#region --- Internal functions Au3Recorder Start ---
Func _Au3RecordSetup()
Opt('WinWaitDelay',300)
Opt('WinDetectHiddenText',1)
Opt('MouseCoordMode',0)
Local $aResult = DllCall('User32.dll', 'int', 'GetKeyboardLayoutNameW', 'wstr', '')
If $aResult[1] <> '00000409' Then

EndIf

EndFunc

Func _WinWaitActivate($title,$text,$timeout=0)
WinWait($title,$text,$timeout)
If Not WinActive($title,$text) Then WinActivate($title,$text)
WinWaitActive($title,$text,$timeout)
EndFunc

_AU3RecordSetup()
#endregion --- Internal functions Au3Recorder End ---

_WinWaitActivate("Program Manager","FolderView")
MouseClick("left",274,750,1)
_WinWaitActivate("Total Commander 8.0 - BMW-Car IT GmbH","")
MouseClick("left",85,190,1)
Send("{F6}")
_WinWaitActivate("Total Commander","")
Send("{ENTER}")
_WinWaitActivate("Program Manager","FolderView")
MouseClick("left",446,748,1)
#endregion --- Au3Recorder generated code End ---

Доброе время суток.
В скрипте JS который делится на три части запускаются три скрипта autoit. Кодером записал действия, вот одно из них. (Второй) Открывается Total Commander клик по первому файлу F6 и обратно переход на браузер. Все работает, но есть нюанс. Если на сайте не оказывается нужной кнопки по которой первый au3 делает клик, то процесс не закрыт. И вместо второго au3 работу заканчивает первий. Хотел написать условия в переди последнего блока, что если процесс au3 запущен, то сначала закрываем первый процесс а потом запускаем второй au3. Писал в последнем блоке скрипта условия если запущен процесс то закрыть, а потом все остальное по тексту. Но добылся только закрытия роботи скрипта. Помогите переобразовать записаное кодером в "нормальный вид" и куда клеится
Код:
Local $aResult = DllCall('User32.dll', 'int', 'GetKeyboardLayoutNameW', 'wstr', '')
а также где и как прописать If и Else. А может я вобще не то делаю. Большое спасибо.
 

sergioz

Знающий
Сообщения
39
Репутация
5
Код:
Func _WinWaitActivate($title,$text,$timeout=0)
   WinWait($title,$text,$timeout)
   If Not WinActive($title,$text) Then WinActivate($title,$text)
   WinWaitActive($title,$text,$timeout)
EndFunc


WinWaitActive - Приостановить выполнение скрипта до активизации указанного окна, по этому смысла писать функцию нет.

если хотите через функцию - то рекомендую так:
Код:
$i=1
while Not WinActive($title,$text) 
$i+=1
if $i>=100 then exitloop;количество проверок наличия окна чтоб не зацикливалось
WinActivate($title,$text)
sleep(200)
wend




Код:
_WinWaitActivate("Program Manager","FolderView")
MouseClick("left",274,750,1)


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