• Earn real money by being active: Hello Guest, earn real money by simply being active on the forum — post quality content, get reactions, and help the community. Once you reach the minimum credit amount, you’ll be able to withdraw your balance directly. Learn how it works.

AutoIT Auto-Closing Master of new Devices

Status
Not open for further replies.

Skydno

NOT IN SPAIN
User
Joined
Jan 14, 2015
Messages
33
Reputation
0
Reaction score
319
Points
53
Credits
0
‎10 Years of Service‎
66%
[HIDE-THANKS]

Code:
>#include "DeviceAPI.au3"

;Смысл программы в том, чтобы закрывая окна Мастера Нового Оборудования,
; она считала количество таких закрытых окон и сравнивала это кол-во
; с текущим количеством неизвестных устройств, а когда кол-во последних
; будет равно количеству закрытых окон (система установит все что может
; установить), мы запустим установку неизвестных устройств.
;
;Можно конечно из окна Мастера нового оборудования из WindowText брать
; наименование конкретного неизвестного устройства, затем находить его в
; текущем массиве и выбивать из "обоймы", но это уже лишнее, хотя и точнее.

$wcount = 0

;Перебирая окна, закрываем паразитные и ведем статистику
Do
   $var = WinList()
   For $i = 1 to $var[0][0]
       If $var[$i][0] <> "" AND BitAnd( WinGetState($var[$i][1]), 2 ) Then
           Select
               Case $var[$i][0] = "Изменение параметров системы"
                   WinClose("Изменение параметров системы")
               Case $var[$i][0] = "Мастер нового оборудования"
                   WinClose("Мастер нового оборудования")
                   $wcount+=1
           EndSelect
       EndIf
   Next
Until $wcount=GetCurrentUnknownDevicesCount()

;Если все сходится, то завершаем работу
MsgBox(64,"","Неизвестных устройств: " & $wcount)

;=======================================================================
; Функция подсчета неизвестных устройств в данный момент
;=======================================================================
Func GetCurrentUnknownDevicesCount()

   $i=0

   ;Строим список классов устройств
   _DeviceAPI_GetAllDevices()

   ;Просматривая устройства, считаем количество устройств с пустымы класом и идентификатором
   While _DeviceAPI_EnumDevices()
       $classname = _DeviceAPI_GetClassName(_DeviceAPI_GetDeviceRegistryProperty($SPDRP_CLASSGUID))
       $classGUID = _DeviceAPI_GetDeviceRegistryProperty($SPDRP_CLASSGUID)
       If $classname="" AND $classGUID="" Then $i+=1
   WEnd

   ;Очищаем за собой
   _DeviceAPI_DestroyDeviceInfoList()

   Return $i

EndFunc
[/HIDE-THANKS]

 
Status
Not open for further replies.
Back
Top