Имя пользователя:
Пароль:
 

Показать сообщение отдельно

Ветеран


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

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


Таким образом, оптимизированный/сокращенный код:

читать дальше »
Код: Выделить весь код
#include <ButtonConstants.au3>
#include <Constants.au3>
#include <GUIConstantsEx.au3>
#include <Icons.au3>
#include <WinAPI.au3>

Global $pic1_1, $pic3_1, $pic1_2, $pic2_2, $pic3_2, $sLogI1_1, $sLogI1_2, $sLogI2_2, $sLogI3_1, $sLogI3_2
Global $Save_Event, $Save_MU, $Save_BITS, $sLog1_2, $sLog2_2, $sLog3_2, $sLog1_1, $sLog3_1

Opt("GUIOnEventMode", 1)

$hMain_GUI = GUICreate("Диагностика и Настройка", 619, 442, 189, 122)
GUISetIcon('Windows.ico', 1)
GUISetFont(8.5, 400, 0, 'MS Shell Dlg')
GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSEClicked")

$Tab1 = GUICtrlCreateTab(8, 16, 601, 377)

;;;; Hotfixes ;;;;
$HotfixErrors = GUICtrlCreateTabItem("HotfixErrors")

$Button_HotFixesUpdate = GUICtrlCreateButton("Обновить", 84, 400, 60, 33, $BS_MULTILINE)
GUICtrlSetOnEvent($Button_HotFixesUpdate, "_HotFixes_Update")

; Работа со службами
GUICtrlCreateGroup("Службы, отвечающие за Автообновление", 16, 330, 370, 55)

GUICtrlCreateLabel("Автоматич. обновление", 24, 348, 75, 30, $BS_MULTILINE)
GUICtrlSetTip(-1, "тс - текущее состояние службы, тз - тип запуска службы")
GUICtrlCreateLabel("тс", 95, 348, 15, 15)
GUICtrlCreateLabel("тз", 95, 361, 15, 15)

GUICtrlCreateLabel("Фоновая Интел. Служба", 143, 348, 75, 30, $BS_MULTILINE)
GUICtrlCreateLabel("тз", 229, 361, 15, 15)

GUICtrlCreateLabel("Журнал Событий", 282, 348, 75, 30, $BS_MULTILINE)
GUICtrlCreateLabel("тс", 335, 348, 15, 15)
GUICtrlCreateLabel("тз", 335, 361, 15, 15)

; запуск и сбор информации о текущем состоянии служб
_ServicesStat()

$Button_StartOptim = GUICtrlCreateButton("Старт", 478, 342, 55, 35, $BS_MULTILINE)
GUICtrlSetOnEvent($Button_StartOptim, "_StartOptim")
$Button_Save = GUICtrlCreateButton("Сохранить", 400, 342, 65, 35, $BS_MULTILINE)
GUICtrlSetOnEvent($Button_Save, "_SaveOld")
GUICtrlSetState(-1, $GUI_FOCUS)
$Button_Restore = GUICtrlCreateButton("Откат", 545, 342, 55, 35, $BS_MULTILINE)
GUICtrlSetOnEvent($Button_Restore, "_RestoreOld")

GUICtrlCreateTabItem("")


GUISetState()

While 1
    Sleep(100)
WEnd



Func CLOSEClicked()
  Exit
EndFunc

;; Hotfixes Section ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; функция сохранения текущих настроек служб
Func _SaveOld()
 GUICtrlSetState($Button_Save, $GUI_DISABLE)
 Dim $aSvcState[5]=['boot','system','auto','demand','disabled']
$Save_MU   = $aSvcState[$sLog1_2]
$Save_BITS = $aSvcState[$sLog2_2]
$Save_Event= $aSvcState[$sLog3_2]

 sleep(1000)
 GUICtrlSetState($Button_Save, $GUI_ENABLE)
EndFunc

; функция оптимизации настроек служб для запуска и работы MU
Func _StartOptim()
	GUICtrlSetState($Button_StartOptim, $GUI_DISABLE)
	RunWait('sc config BITS start= demand', '', @SW_HIDE)
	RunWait('sc config wuauserv start= auto', '', @SW_HIDE)
	RunWait('sc start wuauserv', '', @SW_HIDE)
	RunWait('sc config EventLog start= auto', '', @SW_HIDE)
	RunWait('sc start EventLog', '', @SW_HIDE)
     sleep(1000)
   _ServicesStat()
   sleep(1000)
   GUICtrlSetState($Button_StartOptim, $GUI_ENABLE)
EndFunc
; функция откат состояния служб к старым конфигурациям
Func _RestoreOld()
 GUICtrlSetState($Button_Restore, $GUI_DISABLE)
 RunWait('sc config eventlog start= ' & $Save_Event &'', '', @SW_HIDE)
 RunWait('sc config wuauserv start= ' & $Save_MU &'', '', @SW_HIDE)
 RunWait('sc config BITS start= ' & $Save_BITS &'', '', @SW_HIDE)
  sleep(1000)
 _ServicesStat()
 sleep(1000)
 GUICtrlSetState($Button_Restore, $GUI_ENABLE)
EndFunc
;~ ; функция кнопки "Обновить"  обновление информации о текущем состоянии служб
Func _HotFixes_Update()
	 GUICtrlSetState($Button_HotFixesUpdate, $GUI_DISABLE)
     _ServicesStat()
     sleep(1000)
     GUICtrlSetState($Button_HotFixesUpdate, $GUI_ENABLE)
EndFunc
; функция сбора информации о текущем состоянии служб (используется SC и обработка полученного вывода через  StringRegExpReplace)и вывод через иконки данной информации на форму)
Func _ServicesStat()

  $sLog1_1 = ''
  $sLog1_2 = ''
  $sLog2_2 = ''
  $sLog3_1 = ''
  $sLog3_2 = ''

;  запрос информации о состоянии служб (текущее состояние: работает или нет)
 $hIPconfig1_1 = Run('sc query wuauserv', '', @SW_HIDE, $STDOUT_CHILD)
 $hIPconfig3_1 = Run('sc query eventlog', '', @SW_HIDE, $STDOUT_CHILD)
;  запрос информации о типе запуска служб (авто, вручную, отключено)
 $hIPconfig1_2 = Run('sc qc wuauserv', '', @SW_HIDE, $STDOUT_CHILD)
 $hIPconfig2_2 = Run('sc qc BITS', '', @SW_HIDE, $STDOUT_CHILD)
 $hIPconfig3_2 = Run('sc qc eventlog', '', @SW_HIDE, $STDOUT_CHILD)

 While 1
    $sLogI1_1 &= StdoutRead($hIPconfig1_1)
	$sLogI3_1 &= StdoutRead($hIPconfig3_1)

	$sLogI1_2 &= StdoutRead($hIPconfig1_2)
	$sLogI2_2 &= StdoutRead($hIPconfig2_2)
	$sLogI3_2 &= StdoutRead($hIPconfig3_2)

	 If @error Then ExitLoop
    Sleep(10)
 WEnd

; фильтрация информации о службах
  $sLog1_1 = StringRegExpReplace($sLogI1_1, "(?si).*STATE\D*(\d+).*", '\1')
  $sLog3_1 = StringRegExpReplace($sLogI3_1, "(?si).*STATE\D*(\d+).*", '\1')
  $sLog1_2 = StringRegExpReplace($sLogI1_2, "(?si).*START_TYPE\D*(\d+).*", '\1')
  $sLog2_2 = StringRegExpReplace($sLogI2_2, "(?si).*START_TYPE\D*(\d+).*", '\1')
  $sLog3_2 = StringRegExpReplace($sLogI3_2, "(?si).*START_TYPE\D*(\d+).*", '\1')
; программиорование отображение информации о службах через иконки

Dim $aIcons[2]=['error.ico','ok.ico']
$pic1_1=$aIcons[$sLog1_1=4]
$pic3_1=$aIcons[$sLog3_1=4]
$pic1_2=$aIcons[$sLog1_2=2]
$pic2_2=$aIcons[(($sLog2_2 = 3) Or ($sLog2_2 = 2))]
$pic3_2=$aIcons[$sLog1_2=2]
_ImageGet()
EndFunc

; функция отображения иконок на конкрентой вкладке формы (форма с Tab)
Func _ImageGet()
$Width = 14
$Height = 14
$hIcon1_1 = _Icons_Icon_Extract($pic1_1, -3, $Width, $Height)
$hBitmap1_1 = _Icons_Bitmap_CreateFromIcon($hIcon1_1)
$Pic1_1 = GUICtrlCreatePic('', 115, 348, $Width, $Height)
_SetHImage(-1, $hBitmap1_1)

$hIcon3_1 = _Icons_Icon_Extract($pic3_1, -3, $Width, $Height)
$hBitmap3_1 = _Icons_Bitmap_CreateFromIcon($hIcon3_1)
$Pic3_1 = GUICtrlCreatePic('', 355, 348, $Width, $Height)
_SetHImage(-1, $hBitmap3_1)

$hIcon1_2 = _Icons_Icon_Extract($pic1_2, -3, $Width, $Height)
$hBitmap1_2 = _Icons_Bitmap_CreateFromIcon($hIcon1_2)
$Pic1_2 = GUICtrlCreatePic('', 115, 361, $Width, $Height)
_SetHImage(-1, $hBitmap1_2)

$hIcon2_2 = _Icons_Icon_Extract($pic2_2, -3, $Width, $Height)
$hBitmap2_2 = _Icons_Bitmap_CreateFromIcon($hIcon2_2)
$Pic2_2 = GUICtrlCreatePic('', 249, 361, $Width, $Height)
_SetHImage(-1, $hBitmap2_2)

$hIcon3_2 = _Icons_Icon_Extract($pic3_2, -3, $Width, $Height)
$hBitmap3_2 = _Icons_Bitmap_CreateFromIcon($hIcon3_2)
$Pic3_2 = GUICtrlCreatePic('', 355, 361, $Width, $Height)
_SetHImage(-1, $hBitmap3_2)

_WinAPI_DeleteObject($hBitmap1_1)
_WinAPI_DeleteObject($hBitmap3_1)
_WinAPI_DeleteObject($hBitmap1_2)
_WinAPI_DeleteObject($hBitmap2_2)
_WinAPI_DeleteObject($hBitmap3_2)

_WinAPI_DestroyIcon($hIcon1_1)
_WinAPI_DestroyIcon($hIcon3_1)
_WinAPI_DestroyIcon($hIcon1_2)
_WinAPI_DestroyIcon($hIcon2_2)
_WinAPI_DestroyIcon($hIcon3_2)

EndFunc

;; End Hotfixes Section  ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;

-------
мы рождены, чтоб сказку сделать былью


Отправлено: 18:04, 31-08-2010 | #17