Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   AutoIt (http://forum.oszone.net/forumdisplay.php?f=103)
-   -   Написал программу auto driver accept, помогите устранить баг (http://forum.oszone.net/showthread.php?t=178701)

diamondxx 20-06-2010 18:48 1438019

Написал программу auto driver accept, помогите устранить баг
 
Вложений: 1
Часто бывает после установки виндовс (тем более при развертывании образа с acronis UR) начинается установка драверов. Винда частенько выкидывает окошко "Мастер установки устройств" и даже если драйвер есть в базе винды (интегрировали может заранее) всё равно приходится жать Далее, драйвер находится, потом Готово.
Для того чтобы избавиться от каких-либо телодвижений на эту тему я написал программу для автоматического согласия на установку драйверов, в том числе не подписанных.
Auto driver accept распознает все окна "мастера установки драйверов" и соглашается на установку.
есть только 1 вариант когда программа бездействует - это когда на ваше устройство есть несколько вариантов драйверов (разных версий). Тогда придётся ручками выбрать какой вам нужен. Связано с тем что не всегда первый драйвер в списке наиболее подходящий.

Но есть 1 баг. Программа иногда не видит открытых окон и бездействует, хотя написана так чтобы исполнялась циклически, используются команды While и Whend
Выкладываю исходник и прошу помощи в решении проблемы.
После устранения недочетов хочу создать аддон.

Smokie_id11243755 28-08-2010 11:02 1483357

Переделал этот скрипт - убрал по-моему ненужные "WinActivate...", "WinWaitActive...", "sleep...", добавил отсчет в 10 секунд на кнопке "да" на диалогах с вопросом о перезагрузке и снятие галочки "Больше не напоминать об установке этого драйвера".

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

Программа бездействовала скорей всего из-за странностей с кнопками. Не раз замечал, что в одном и том же диалоге кнопка "Далее>" может быть Button4,8,9.... добавил их. Не заметил чтоб прога бездействовала.

Код:

TraySetState(4)
TraySetClick (16)
TraySetToolTip("Автоматизация установки оборудования")
Opt("TrayAutoPause", 0)

$title="Установка оборудования"
$text = _
    'Поиск и установка драйверов оборудования' & @CRLF & _
    'пройдут в автоматическом режиме.'

;ToolTip($text,"885","662",$title,1,2)
TrayTip($title, $text ,10,1)

While 1
    ;"далее" при выборе из нескольких драйверов
        If WinExists("[CLASS:#32770]", "Сведения о подписывании драйверов") Then
;        WinActivate ("[CLASS:#32770]", "Сведения о подписывании драйверов")
 ;      WinWaitActive ("[CLASS:#32770]", "Сведения о подписывании драйверов")
                ;sleep(500)
        ControlClick("[CLASS:#32770]","Сведения о подписывании драйверов","Button7")
    EndIf
        ;жмем "Готово" (в случае, если мастеру не удалось найти более подходящий драйвер)
        If WinExists("[CLASS:#32770]","Мастеру не удалось найти более") Then
;                WinActivate("[CLASS:#32770]","Мастеру не удалось найти более")
;                WinWaitActive("[CLASS:#32770]","Мастеру не удалось найти более")
                ;sleep(500)
                ControlClick("[CLASS:#32770]","Мастеру не удалось найти более","Button8")
        EndIf
        ;зжмем "Готово" вариант №2 (в случае, если был установлен подходящий драйвер)
        If WinExists("[CLASS:#32770]","Мастер завершил установку") Then
;                WinActivate("[CLASS:#32770]","Мастер завершил установку")
;                WinWaitActive("[CLASS:#32770]","Мастер завершил установку")
                ;sleep(500)
                ;несколько вариантов кодов кнопок
                ControlClick("[CLASS:#32770]","Мастер завершил установку", "Button4")
                ControlClick("[CLASS:#32770]","Мастер завершил установку", "Button8")
                ControlClick("[CLASS:#32770]","Мастер завершил установку", "Button9")
                ControlClick("[CLASS:#32770]","Мастер завершил установку","Button17")
        EndIf
        ; задание Предупреждение при обновлении - жмем "Да"
    If WinExists("Предупреждение при обновлении драйвера","Установка этого драйвера") Then
;      WinActivate("Предупреждение при обновлении драйвера","Установка этого драйвера")
 ;      WinWaitActive("Предупреждение при обновлении драйвера","Установка этого драйвера")
                ;sleep(500)
        ControlClick("Предупреждение при обновлении драйвера","Установка этого драйвера","Button1")
    EndIf
        ; задание Мастер нового оборудования при старте системы *** - Жмем Готово
        If WinExists("[CLASS:#32770]","Установленное оборудование не")  Then
  ;      WinActivate ("[CLASS:#32770]","Установленное оборудование не")
  ;    WinWaitActive("[CLASS:#32770]","Установленное оборудование не")
                ;sleep(500)
        ControlClick("[CLASS:#32770]","Установленное оборудование не","Button4")
        EndIf
        ;жмем Далее
        If WinExists("[CLASS:#32770]","Этот мастер помогает") Then
    ;    WinActivate ("[CLASS:#32770]","Этот мастер помогает")
    ;  WinWaitActive("[CLASS:#32770]","Этот мастер помогает")
                ;sleep(500)
                ControlClick("[CLASS:#32770]","Этот мастер помогает","Button7")
                ControlClick("[CLASS:#32770]","Этот мастер помогает","Button8")
        EndIf
        ;жмем Готово, если не получилось найти драйвер
        If WinExists("[CLASS:#32770]","Оборудование не установлено,") Then
    ;  WinActivate ("[CLASS:#32770]","Оборудование не установлено,")
      ;  WinWaitActive("[CLASS:#32770]","Оборудование не установлено,")
                ;sleep(500)
        ;снимаем галочку "не напоминать об установке этого драйвера"
                ControlClick("[CLASS:#32770]","Оборудование не установлено,","Button1")
                sleep(500)
        ControlClick("[CLASS:#32770]","Оборудование не установлено,","Button9")
    EndIf
        ; жмем Готово,  если обнаружена проблема при установке драйвера
        If WinExists("[CLASS:#32770]","Обнаружена проблема при устано") Then
    ;    WinActivate ("[CLASS:#32770]","Обнаружена проблема при устано")
    ;    WinWaitActive("[CLASS:#32770]","Обнаружена проблема при устано")
                ;sleep(500)
        ;снимаем галочку "не напоминать об установке этого драйвера"
                ControlClick("[CLASS:#32770]","Обнаружена проблема при устано,","Button1")
                sleep(500)
        ControlClick("[CLASS:#32770]","Обнаружена проблема при устано","Button9")
    EndIf
        ; задание Установка оборудования=установка nonWHQL драйвера - Жмем Готово
    If WinExists("Установка оборудования","Установка этого программного") Then
        WinActivate ("Установка оборудования","Установка этого программного")
        ;  WinWaitActive("Установка оборудования","Установка этого программного")
        ;        sleep(500)
                ControlClick("Установка оборудования","Установка этого программного","Button1")
        EndIf
        ; задание запасное - Предупреждение при установке нового драйвера. Жмем Да
        If WinExists("Предупреждение при установке нового драйвера") Then
        WinActivate("Предупреждение при установке нового драйвера")
        WinWaitActive("Предупреждение при установке нового драйвера")
                sleep(500)
        Send("{ENTER}")
    EndIf
        ; задание перезагрузка системы при необходимости
    If WinExists("Изменение параметров системы", "перезагрузк") Then
;        WinActivate ("Изменение параметров системы","перезагрузк")
                $TimerInit = TimerInit()
                $iTime = 10
                        While $iTime > 0
                                ControlSetText("Изменение параметров системы", "перезагрузк", "Button1", StringFormat("Да (" & $iTime & ")"))
                                $iTime -= 1
                                Sleep(1000)
                                If not WinExists("Изменение параметров системы", "перезагрузк") Then exit
                        Wend
                ControlClick ("Изменение параметров системы","перезагрузк", "Button1")
        EndIf               
Wend


diamondxx 06-09-2010 12:49 1489545

охо:)) ответ через 2 месяца. Всё равно спасибо учту, проверю, дополню свой скрипт.


Время: 21:51.

Время: 21:51.
© OSzone.net 2001-