Что нового

Автоматизация DxDiag

penatoliy

Новичок
Сообщения
4
Репутация
1
AutoIt: 3.3.6.1
Версия: 1.0

Категория: Автоматизация / Система

Описание: Это мой первый скрипт, сделанный для упрощения сбора информации о системе с помощью "d:rofl:iag -saveonly". Скрипт работает на windows XP и windows 7 (для определения правильных действий использована команда @OSVersion) (ух сколько мозга склевала семёрка: читайте в моём следующем сообщении в теме). Задача была в сборе характеристик с кучи компов, и записи комнат в которых они находятся. При запуске скрипта появляется гуи с предложением ввести номер кабинета, и кнопкой)) скрипт создаёт относительно себя папку с именем log и скидывает всю инфу туда, также он создаёт поддиректории с именем взятым из Editа GUI, имя файла D:rofl:iag меняется на имя компа (@ComputerName).

Код:
#cs ----------------------------------------------------------------------------

 AutoIt Version: 3.3.6.1
 Author:         Толик

 Script Function:
    Запуск дхдиага и хитрое сохранение его вывода (работает в win7 и xp)

#ce ----------------------------------------------------------------------------

#include <GUIConstants.au3>                                         

AutoItSetOption ("WinTitleMatchMode", 2)                            
GUICreate ("Номер кабинета?", 200, 100)                                
$cab = GUICtrlCreateEdit ("", 10, 15, 180, 20, 0x2000)                
$bt = GUICtrlCreateButton ("Поехали", 10, 55, 180)                
$sysv = @OSVersion                                                    
$comn = @ComputerName                                                

GUISetState ()                                                    


Do                                                                    
$msg = GUIGetMsg ()                                                    

if $msg = $bt then                                                    
    
ControlDisable ("Номер кабинета?", "", "[CLASSNN:Button1]")    
ControlDisable ("Номер кабинета?", "", "[CLASSNN:Edit1]")    
$nomer = GUICtrlRead ($cab)                            
if $nomer = "" then                                
    $nomer = "0"                                    
endif                                            
DirCreate (@ScriptDir & "\log\" & $nomer)        


Select                                                            
    Case $sysv = "WIN_XP"                                        
        Run ("dxdiag.exe -saveonly")                            
        WinWait ("DirectX", "WHQL", 10)                            
            if WinExists ("DirectX", "WHQL") then                
                ControlClick ("DirectX", "WHQL", "[CLASSNN:Button2]") 
            endif
        WinWait ("Сохранить как", "DxDiag")                    
                                                
        ControlSetText ("Сохранить как", "DxDiag", "[CLASSNN:Edit1]", '"' & @ScriptDir & "\log\" & $nomer & "\" & $comn & ".txt" & '"')
        $test = ControlGetText ("Сохранить как", "", "[CLASSNN:Edit1]")        
        ControlClick ("Сохранить как", $test, "[CLASSNN:Button2]")            
            WinWait ("Сохранить как", "Заменить?", 5)
            if WinExists("Сохранить как", "Заменить?") Then                        
                ControlClick ("Сохранить как", "Заменить?", "[CLASSNN:Button1]")    
            endif                                                            
        
    Case $sysv = "WIN_7"                                
        Run ("dxdiag.exe -saveonly")                        
        WinWait ("DirectX", "Windows", 10)                            
            if WinExists ("DirectX", "Windows") then                
                ControlClick ("DirectX", "Windows", "[CLASSNN:Button2]") 
            endif
        WinWait ("Сохранить как", "DxDiag")                        
        ControlSend ("Сохранить как", "DxDiag", "[CLASSNN:Edit1]", "^a{BS}")    
                                                
        ControlSetText ("Сохранить как", "", "[CLASSNN:Edit1]", '"' & @ScriptDir & "\log\" & $nomer & "\" & $comn & ".txt" & '"')
        $test = ControlGetText ("Сохранить как", "", "[CLASSNN:Edit1]")        
        ControlClick ("Сохранить как", $test, "[CLASSNN:Button1]")        
        WinWait ("Подтвердить сохранение", "", 5)                        
            if WinExists("Подтвердить сохранение", "") Then            
                ControlClick ("Подтвердить сохранение", "", "[CLASSNN:Button1]")    
            endif                                                            
            
EndSelect

$msg = $GUI_EVENT_CLOSE                                            
endif                                                        
    
Until $msg = $GUI_EVENT_CLOSE


Файл: AU3 (в аттаче)

Источник: Автоматизация D:rofl:iag (Русское сообщество AutoIt)
Автор: penatoliy
 

Yashied

Модератор
Команда форума
Глобальный модератор
Сообщения
5,379
Репутация
2,724
Я оформил тему в соответствии с правилами. В следующий раз оформляй пожалуйста аналогичным образом темы в этом разделе.
 
Автор
P

penatoliy

Новичок
Сообщения
4
Репутация
1
Большое спасибо) Yashied :IL_AutoIt_1:


кстати кто натыкался на грабли с семёркой? у меня например был косяк с путём сохранения.

Код:
WinWait ("Сохранить как", "DxDiag")
ControlSetText ("Сохранить как", "", "[CLASSNN:Edit1]", '"' & @ScriptDir & "\log\" & $nomer & "\" & $comn & ".txt" & '"')


эти 2 строчки работают - текст вставляется, но!! путь меняется только графически... сначала грешил на паузу. сделал слип, но толку было 0, т.к. даже после 10сек паузы и ручного нажатия на "сохранить" фаил дхдиаг оказывался на столе.(как положено по дефолту).
заменил сет на сенд, результат стал положительным, но не удовлетворил стабильностью, стоит только нажать в любом месте мышкой во время сенда, как всё обламывалось))))

Подумав и разобравшись в проблеме, пришёл к выводу... 7ка без сенда, не активирует чтение с поля едит.

решил проблему вставив всего 1у строчку
Код:
ControlSend ("Сохранить как", "DxDiag", "[CLASSNN:Edit1]", "^a{BS}")
 
Автор
P

penatoliy

Новичок
Сообщения
4
Репутация
1
немного допилил скрипт, прикрутив к нему проверку существования файла конфы и директории "кабинета"
 
Верх