Вот весь скрипт с изменениями, как ты и рекомендовал в своём примере.
Часть, которая не хочет работать выделена курсивом
Код:
Код: Выделить всё
Opt("TrayIconDebug",1)
Run("3dmark03_v360_setup.exe")
WinWaitActive("3DMark03 - InstallShield Wizard", "Welcome to the InstallShield Wizard")
ControlClick("3DMark03 - InstallShield Wizard", "Welcome to the InstallShield Wizard", "Button1")
WinWaitActive("3DMark03 - InstallShield Wizard", "License Agreement")
ControlClick("3DMark03 - InstallShield Wizard", "License Agreement", "Button5")
ControlClick("3DMark03 - InstallShield Wizard", "License Agreement", "Button2")
WinWaitActive("3DMark03 - InstallShield Wizard", "Destination Folder")
ControlClick("3DMark03 - InstallShield Wizard", "Destination Folder", "Button1")
WinWaitActive("3DMark03 - InstallShield Wizard", "Click Install to begin")
ControlClick("3DMark03 - InstallShield Wizard", "Click Install to begin", "Button1")
;здесь может появиться окно ввода серийного номера, если программа ставится впервые
IF WinExists ("3DMark03 - InstallShield Wizard", "Futuremark Registration") then
WinActivate("3DMark03 - InstallShield Wizard", "Futuremark Registration")
ControlSetText("3DMark03 - InstallShield Wizard", "Futuremark Registration", "Edit1", "18P2M-MY24M-39UK6-QAX2N")
Sleep (1000)
ControlClick("3DMark03 - InstallShield Wizard", "Futuremark Registration", "Button2")
WinWaitActive("Congratulations!", "")
ControlClick("Congratulations!", "", "Button1")
WinWaitActive("3DMark03 - InstallShield Wizard", "InstallShield Wizard Complete")
ControlCommand("3DMark03 - InstallShield Wizard", "InstallShield Wizard Complete", "Button1", "UnCheck", "")
ControlCommand("3DMark03 - InstallShield Wizard", "InstallShield Wizard Complete", "Button2", "UnCheck", "")
ControlClick("3DMark03 - InstallShield Wizard", "InstallShield Wizard Complete", "Button4")
ElseIf WinExists ("3DMark03 - InstallShield Wizard", "InstallShield Wizard Complete") then
WinActivate("3DMark03 - InstallShield Wizard", "InstallShield Wizard Complete")
ControlCommand("3DMark03 - InstallShield Wizard", "InstallShield Wizard Complete", "Button1", "UnCheck", "")
ControlCommand("3DMark03 - InstallShield Wizard", "InstallShield Wizard Complete", "Button2", "UnCheck", "")
ControlClick("3DMark03 - InstallShield Wizard", "InstallShield Wizard Complete", "Button4")
EndIf
Exit
Насчёт логики. Дело то в том, что он почему то это первое окно не видит, хотя оно есть, ждёт и свиду вполне активно

. По мне, так условие выполнено, а вот с точки зрения AutoIt - почему то - нет
И что толку от продолжения работы скрипта, если дальнейшие действия связаны с кликаньями по окнам которые не появятся, пока не уйдёт текущее?
Я понимаю, что проблема выеденного яйца не стоит - можно сделать тихую инсталяшку или ввести серийный номер перед запуском установки с помощью рег-файла и исключить появление этого окна - дело в другом - хочу выяснить можно ли вообще бороться таким образом с "иногда появляющимися" окнами. У меня уже не первый случай когда нужно использовать функцию условного выполнения и всегда с этим проблемы. Что-то я тут не вкуриваю...