|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » Написал программу auto driver accept, помогите устранить баг |
|
Написал программу auto driver accept, помогите устранить баг
|
Новый участник Сообщения: 37 |
Профиль | Отправить PM | Цитировать
Часто бывает после установки виндовс (тем более при развертывании образа с acronis UR) начинается установка драверов. Винда частенько выкидывает окошко "Мастер установки устройств" и даже если драйвер есть в базе винды (интегрировали может заранее) всё равно приходится жать Далее, драйвер находится, потом Готово.
Для того чтобы избавиться от каких-либо телодвижений на эту тему я написал программу для автоматического согласия на установку драйверов, в том числе не подписанных. Auto driver accept распознает все окна "мастера установки драйверов" и соглашается на установку. есть только 1 вариант когда программа бездействует - это когда на ваше устройство есть несколько вариантов драйверов (разных версий). Тогда придётся ручками выбрать какой вам нужен. Связано с тем что не всегда первый драйвер в списке наиболее подходящий. Но есть 1 баг. Программа иногда не видит открытых окон и бездействует, хотя написана так чтобы исполнялась циклически, используются команды While и Whend Выкладываю исходник и прошу помощи в решении проблемы. После устранения недочетов хочу создать аддон. |
|
Отправлено: 18:48, 20-06-2010 |
Пользователь Сообщения: 65
|
Профиль | Отправить PM | Цитировать Переделал этот скрипт - убрал по-моему ненужные "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 |
Последний раз редактировалось Smokie_id11243755, 05-09-2010 в 14:18. Отправлено: 11:02, 28-08-2010 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Новый участник Сообщения: 37
|
Профиль | Отправить PM | Цитировать охо) ответ через 2 месяца. Всё равно спасибо учту, проверю, дополню свой скрипт.
|
Отправлено: 12:49, 06-09-2010 | #3 |
Участник сейчас на форуме | Участник вне форума | Автор темы | Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Службы - Помогите устранить BSOD | ergasheff | Microsoft Windows Vista | 1 | 19-05-2010 14:32 | |
Ошибка - GetMenuItemInfo Failed? [Как устранить этот баг?] | Kastorskii | Microsoft Windows 2000/XP | 10 | 29-04-2009 16:38 | |
DVD LG GSA помогите устранить причину | Ohviktor | Оптические приводы | 4 | 28-08-2008 15:29 | |
Ребят помогите устранить ошибку в DNS. | nickAd | Microsoft Windows NT/2000/2003 | 5 | 11-10-2006 08:31 | |
auto GordianKnot - помогите победить!!! | night2013 | Видео и аудио: обработка и кодирование | 9 | 25-03-2006 20:08 |
|