Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » Написал программу auto driver accept, помогите устранить баг

Ответить
Настройки темы
Написал программу auto driver accept, помогите устранить баг

Новый участник


Сообщения: 37
Благодарности: 0

Профиль | Отправить PM | Цитировать


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

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

Отправлено: 18:48, 20-06-2010

 

Пользователь


Сообщения: 65
Благодарности: 3

Профиль | Отправить 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
Благодарности: 0

Профиль | Отправить PM | Цитировать


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

Отправлено: 12:49, 06-09-2010 | #3



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » AutoIt » Написал программу auto driver accept, помогите устранить баг

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Службы - Помогите устранить 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




 
Переход