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

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

Ветеран


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

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


FlatX007, посмотрел пример. Как ни странно, обновление происходит только при однократном нажатии на кнопку "Обновить". После изменения статуса службы или типа ее запуска, ничего не меняется.

Вот немного изменил иконки для пущей наглядности:

читать дальше »
Код: Выделить весь код
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Include <GuiButton.au3>
#Include <GuiImageList.au3>

Global $Pic1_1, $Pic1_2, $P1_1, $P1_2, $sLogI1_1, $sLogI1_2
Global $sLog1_2, $sLog1_1
Global $hImageListCom[4]

Global $Icon_Hotfix, $Icon_HotfixErrors

Opt("GUIOnEventMode", 1)

$hMain_GUI = GUICreate("Диагностика и Настройка", 619, 442, 189, 122)
GUISetOnEvent($GUI_EVENT_CLOSE, "CLOSEClicked")
_IconCom()

$Tab1 = GUICtrlCreateTab(8, 16, 601, 377)
    $HotfixErrors = GUICtrlCreateTabItem("HotfixErrors")
        $Button_HotFixesUpdate = GUICtrlCreateButton("Обновить", 510, 400, 85, 33, 0)
        _GUICtrlButton_SetImageList($Button_HotFixesUpdate, $hImageListCom[2])
        GUICtrlSetOnEvent($Button_HotFixesUpdate, "_HotFixes_Update")
_ServicesStat()
        $Icon_HotfixErrors = GUICtrlCreateIcon("shell32.dll", 23, 115, 348, 16, 16)
		$Icon_Hotfix = GUICtrlCreateIcon("shell32.dll", 28, 115, 361, 16, 16)

	$Hotfix = GUICtrlCreateTabItem("Hotfix")


GUICtrlCreateTabItem("")
GUISetState()

While 1
    Sleep(1000)
WEnd

Func CLOSEClicked()
  Exit
EndFunc

Func _IconCom()

  If @Compiled Then
    For $iListCom = 0 To 3

        $hImageListCom[$iListCom] = _GUIImageList_Create(16, 16, 5, 3, 6)

        Local $aImageCom[5] = [$iListCom, $iListCom, $iListCom, $iListCom, $iListCom] ; [Иконка наложения , при наведении , при нажатии , нет ,  иконка после нажатия на кнопку]

        For $f = 0 To UBound($aImageCom) - 1
            _GUIImageList_AddIcon($hImageListCom[$iListCom], @ScriptFullPath, $aImageCom[$f], True)
        Next

    Next
  EndIf
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 = ''

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

 While 1
    $sLogI1_1 &= StdoutRead($hIPconfig1_1)
    $sLogI1_2 &= StdoutRead($hIPconfig1_2)

     If @error Then ExitLoop
    Sleep(10)
 WEnd

; фильтрация информации о службах
  $sLog1_1 = StringRegExpReplace($sLogI1_1, "(?si).*STATE\D*(\d+).*", '\1')
  $sLog1_2 = StringRegExpReplace($sLogI1_2, "(?si).*START_TYPE\D*(\d+).*", '\1')

; программиорование отображение информации о службах через иконки
IF $sLog1_1 = 4  Then
;~  GuiCtrlSetData($Pic1_1, 2)
    GUICtrlSetImage($Icon_Hotfix, "shell32.dll", 5)
Else
;~     GuiCtrlSetData($Pic1_1, 1)
    GUICtrlSetImage($Icon_Hotfix, "shell32.dll", 18)
EndIf

IF $sLog1_2 = 2  Then
;~  GuiCtrlSetData($Pic1_2, 2)
    GUICtrlSetImage($Icon_HotfixErrors, "shell32.dll", 9)
Else
;~     GuiCtrlSetData($Pic1_2, 1)
    GUICtrlSetImage($Icon_HotfixErrors, "shell32.dll", 43)
EndIf

EndFunc


FlatX007, индикаторы служат для сигнализации службы обновления

Попробуйте сделать следующее:
1. запустить скрипт
2. нажать на кнопку обновить - > иконки поменялись
3. заходим Панель управления -> администрирование -> службы и меняем у Автоматического обновления статус и тип запуска
4. жмем на обновить - > иконки не поменялись..

Я уже просто в тихом трансе. Из-за этих иконок не могу собрать утилиту. Знал бы -заменил на сигнализацию цветом, блин...

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


Отправлено: 03:56, 02-10-2010 | #22