Войти

Показать полную графическую версию : [решено] Внедрение иконок в скомпилированный скрипт (использование AutoIt3Wrapper)


Страниц : [1] 2

saavaage
29-09-2010, 00:37
Суть:
попробовал внедрить при компиляции иконки в будущий исполняемый файл. Все, что удалось добиться, - внедрить иконку windows.ico и музыку. Остальные иконки встроились, но не работают. Библиотеку вроде активировал, но не знаю, какие функции из нее использовать и как ими заставить работать все иконки.

Код:

#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_icon=Windows.ico
#AutoIt3Wrapper_UseUpx=n
#AutoIt3Wrapper_Res_Description=Resources Test Script
#AutoIt3Wrapper_Res_Fileversion=1.0.0.0
#AutoIt3Wrapper_Res_Language=1033
#AutoIt3Wrapper_Res_Icon_Add=refresh.ico
#AutoIt3Wrapper_Res_Icon_Add=ok.ico
#AutoIt3Wrapper_Res_Icon_Add=error.ico
#AutoIt3Wrapper_Run_AU3Check=n
#AutoIt3Wrapper_Run_After=ResHacker.exe -add %out%, %out%, MySound.wav, SOUND, 200, 0
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <ButtonConstants.au3>
#include <Constants.au3>
#include <GuiButton.au3>
#include <GUIConstantsEx.au3>
#include <GuiImageList.au3>
#include <Icons.au3>
#include <WinAPI.au3>
#include <GUIConstantsEx.au3>

#Include <Resources.au3>

Global $Pic1_1, $Pic3_1, $Pic1_2, $Pic2_2, $Pic3_2, $PicError, $sLogI1_1, $sLogI1_2, $sLogI2_2, $sLogI3_1, $sLogI3_2, $hIcon, $Width = 14, $Height = 14
Global $Save_Event, $Save_MU, $Save_BITS, $sLog1_2, $sLog2_2, $sLog3_2, $sLog1_1, $sLog3_1

Global $aIcons[2] = [_ResourceSetImageToCtrl(error.ico), _ResourceSetImageToCtrl(ok.ico)]
For $i = 0 To 1
$hIcon = _Icons_Icon_Extract($aIcons[$i], 0, $Width, $Height)
$aIcons[$i] = _Icons_Bitmap_CreateFromIcon($hIcon)
_WinAPI_DestroyIcon($hIcon)
Next

Global $hImageListRefresh = _GUIImageList_Create(16, 16, 5)
_ResourceSetImageToCtrl(-1, "refresh.ico")





Opt("GUIOnEventMode", 1)

$hMain_GUI = GUICreate("Диагностика и Настройка", 619, 442, 189, 122)
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 = _GUICtrlCreateButtonEx4("Обновить", 510, 400, 85, 33, 'refresh.ico', -5)
GUICtrlSetTip(-1, "Обновить текущее состояние вкладки")
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)


$Pic1_1 = GUICtrlCreatePic('', 115, 348, $Width, $Height)
$Pic3_1 = GUICtrlCreatePic('', 355, 348, $Width, $Height)
$Pic1_2 = GUICtrlCreatePic('', 115, 361, $Width, $Height)
$Pic2_2 = GUICtrlCreatePic('', 249, 361, $Width, $Height)
$Pic3_2 = GUICtrlCreatePic('', 355, 361, $Width, $Height)
; запуск и сбор информации о текущем состоянии служб
_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()
_ResPlaySound('#200')
While 1
Sleep(100)
WEnd

Func CLOSEClicked()
Exit
EndFunc

Func _GUICtrlCreateButtonEx4($sText, $iLeft, $iTop, $iWidth = -1, $iHeight = -1, $sIconFile = "", $iIconIndex = 0)
Local $nButton = GUICtrlCreateButton($sText, $iLeft, $iTop, $iWidth, $iHeight)
_GUIImageList_AddIcon($hImageListRefresh, $sIconFile, $iIconIndex)
_GUICtrlButton_SetImageList($nButton, $hImageListRefresh)
Return $nButton
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')
; программиорование отображение информации о службах через иконки

_SetHImage($Pic1_1, $aIcons[$sLog1_1 = 4])
_SetHImage($Pic3_1, $aIcons[$sLog3_1=4])
_SetHImage($Pic1_2, $aIcons[$sLog1_2=2])
_SetHImage($Pic2_2, $aIcons[(($sLog2_2 = 3) Or ($sLog2_2 = 2))])
_SetHImage($Pic3_2, $aIcons[$sLog3_2=2])
_SetHImage($PicError, $aIcons[$sLog3_1=4])

EndFunc

Подскажите как их заставить работать, плиз

PS Autoit 3.3.6.1 Полный архив с иконками, AutoIt3Wrapper, библиотекой, ResHacker и т.д. - в аттаче - см. пост: http://forum.oszone.net/post-1507813-4.html

FlatX007
29-09-2010, 18:32
#AutoIt3Wrapper_Run_After=ResHacker.exe -delete %out%, %out%, DIALOG, 1000,
#AutoIt3Wrapper_Run_After=ResHacker.exe -delete %out%, %out%, ICON, 162,
#AutoIt3Wrapper_Run_After=ResHacker.exe -delete %out%, %out%, ICON, 164,
#AutoIt3Wrapper_Run_After=ResHacker.exe -delete %out%, %out%, MENU, 166,
#AutoIt3Wrapper_Run_After=ResHacker.exe -delete %out%, %out%, ICON, 169,
#AutoIt3Wrapper_Run_After=ResHacker.exe -add %out%, %out%, Settings.ico, Icon, 0, 0
#AutoIt3Wrapper_Run_After=ResHacker.exe -add %out%, %out%, RSS.ico, Icon, 1, 0

saavaage
29-09-2010, 22:31
FlatX007, не подскажите технологию, т.е. что значат параметры:
-delete %out%, %out%, DIALOG, 1000,
-delete %out%, %out%, ICON, 169,

или
-add %out%, %out%, Settings.ico, Icon, 0, 0

saavaage
30-09-2010, 00:04
Внес изменения в код, но не помогло. Вот, что получилось:
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_icon=Windows.ico
#AutoIt3Wrapper_UseUpx=n
#AutoIt3Wrapper_Res_Description=Resources Test Script
#AutoIt3Wrapper_Res_Fileversion=1.0.0.0
#AutoIt3Wrapper_Res_Language=1033
#AutoIt3Wrapper_Res_Icon_Add= ok.ico
#AutoIt3Wrapper_Res_Icon_Add= error.ico
#AutoIt3Wrapper_Run_AU3Check=n
#AutoIt3Wrapper_Run_After=ResHacker.exe -add %out%, %out%, MySound.wav, SOUND, 200, 0
#AutoIt3Wrapper_Res_Icon_Add= refresh.ico
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <ButtonConstants.au3>
#include <Constants.au3>
#include <GuiButton.au3>
#include <GUIConstantsEx.au3>
#include <GuiImageList.au3>
#include <Icons.au3>
#include <WinAPI.au3>
#include <GUIConstantsEx.au3>

#Include <Resources.au3>

Global $Pic1_1, $Pic3_1, $Pic1_2, $Pic2_2, $Pic3_2, $PicError, $sLogI1_1, $sLogI1_2, $sLogI2_2, $sLogI3_1, $sLogI3_2, $hIcon, $Width = 14, $Height = 14
Global $Save_Event, $Save_MU, $Save_BITS, $sLog1_2, $sLog2_2, $sLog3_2, $sLog1_1, $sLog3_1

Global $aIcons[2] = [_ResourceSetImageToCtrl('error.ico'), _ResourceSetImageToCtrl('ok.ico')]
For $i = 0 To 1
$hIcon = _Icons_Icon_Extract($aIcons[$i], 0, $Width, $Height)
$aIcons[$i] = _Icons_Bitmap_CreateFromIcon($hIcon)
_WinAPI_DestroyIcon($hIcon)
Next

Global $hImageListRefresh = _GUIImageList_Create(16, 16, 5)
_ResourceSetImageToCtrl(-1, "refresh.ico")





Opt("GUIOnEventMode", 1)

$hMain_GUI = GUICreate("Диагностика и Настройка", 619, 442, 189, 122)
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 = _GUICtrlCreateButtonEx4("Обновить", 510, 400, 85, 33, 'refresh.ico', -5)
GUICtrlSetTip(-1, "Обновить текущее состояние вкладки")
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)


$Pic1_1 = GUICtrlCreatePic('', 115, 348, $Width, $Height)
$Pic3_1 = GUICtrlCreatePic('', 355, 348, $Width, $Height)
$Pic1_2 = GUICtrlCreatePic('', 115, 361, $Width, $Height)
$Pic2_2 = GUICtrlCreatePic('', 249, 361, $Width, $Height)
$Pic3_2 = GUICtrlCreatePic('', 355, 361, $Width, $Height)
; запуск и сбор информации о текущем состоянии служб
_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()
_ResPlaySound('#200')
While 1
Sleep(100)
WEnd

Func CLOSEClicked()
Exit
EndFunc

Func _GUICtrlCreateButtonEx4($sText, $iLeft, $iTop, $iWidth = -1, $iHeight = -1, $sIconFile = "", $iIconIndex = 0)
Local $nButton = GUICtrlCreateButton($sText, $iLeft, $iTop, $iWidth, $iHeight)
_GUIImageList_AddIcon($hImageListRefresh, $sIconFile, $iIconIndex)
_GUICtrlButton_SetImageList($nButton, $hImageListRefresh)
Return $nButton
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')
; программиорование отображение информации о службах через иконки

_SetHImage($Pic1_1, $aIcons[$sLog1_1 = 4])
_SetHImage($Pic3_1, $aIcons[$sLog3_1=4])
_SetHImage($Pic1_2, $aIcons[$sLog1_2=2])
_SetHImage($Pic2_2, $aIcons[(($sLog2_2 = 3) Or ($sLog2_2 = 2))])
_SetHImage($Pic3_2, $aIcons[$sLog3_2=2])
_SetHImage($PicError, $aIcons[$sLog3_1=4])

EndFunc
Прикрепил полный рабочий набор (см. аттач), включая библиотеку и все файлы

FlatX007
30-09-2010, 10:40
не подскажите технологию, т.е. что значат параметры: »
В скомпилированный файл "вживляются" стандартный иконки AutoIt, а так же стандартный диалог ... и др. Всё это можно посмотреть редактором ресурсов - Restorator`ом, ResHack`ом ...
-delete - команда для удаления ресурсов.

Кусок справки ResHack`era
To add or update dialog name:maindlg lang:0 in MyProg.exe from UpdDlg.res
ResHacker.exe -addoverwrite MyProg.exe, MyProgNew.exe, upddlg.res, dialog,maindlg,0

To add or update bitmap name:128 in MyProg.exe from NewImage.bmp
ResHacker.exe -addoverwrite MyProg.exe, MyProgNew.exe, NewImage.bmp , bitmap,128,

To add or update all bitmaps in MyProg.exe from Images.res
ResHacker.exe -addoverwrite MyProg.exe, MyProgNew.exe, Images.res, bitmap,,

To add a “userdefined” binary resource (README,1,0) to MyProg.exe from ReadMe.html
ResHacker.exe -addoverwrite MyProg.exe, MyProgNew.exe, ReadMe.html, readme,1,0

To add all items in Images.res to MyProg.exe (but fail if any item already exists)
ResHacker.exe -add MyProg.exe, MyProgNew.exe, Images.res ,,,

To add all items in Images.res to MyProg.exe (skipping any existing items)
ResHacker.exe -addskip MyProg.exe, MyProgNew.exe, Images.res ,,,

To modify all items in MyProg.exe with the items in Images.res (ignoring any items in Images.res which do not exist in MyProg.exe)
ResHacker.exe -modify MyProg.exe, MyProgNew.exe, Images.res , , ,

To extract all icons from MyProg.exe to myprogicons.rc (creating myprogicons.rc, Icon_1.ico, Icon_2.ico , Icon_3.ico etc...)
ResHacker.exe -extract MyProg.exe, myprogicons.rc, icongroup,,

To delete GIF name:128 from MyProg.exe
ResHacker.exe -delete MyProg.exe, MyProgNew.exe, gif,128,
Скачать ResHack (офф.сайт) (http://bogdan.at.ua/reshack/index.html)

-delete %out%, %out%, ICON, 169, »
Удаляем набор стандартных иконок, что бы индекс наших иконок начинался с Нуля, в AutoIt3Wrapper иконку можно не выбирать, она будет под индексом 1.
#AutoIt3Wrapper_Run_After=ResHacker.exe -add %out%, %out%, ExeIcon.ico, Icon, 1, 0

Для окна GUI можно сделать так:
GUISetIcon(@ScriptFullPath, 1)

saavaage
30-09-2010, 11:56
FlatX007, ладно, пошел спать (3 суток уже не кемарил). Как отосплюсь - проверю свой бред еще раз... Спасибо

saavaage
30-09-2010, 17:08
FlatX007,
Единственное, что пришло в голову, это применить функцию _ResGetAsImage:
получилось для массива:

$Icon_Ok = _ResGetAsImage('#201', -1)
$Icon_Er = _ResGetAsImage('#202',-1)

Global $aIcons[2] = [$Icon_Er, $Icon_Ok ]
;~ Global $aIcons[2] = ['error.ico', 'Ok.ico' ]
For $i = 0 To 1
$hIcon = _Icons_Icon_Extract($aIcons[$i], 0, $Width, $Height)
$aIcons[$i] = _Icons_Bitmap_CreateFromIcon($hIcon)
_WinAPI_DestroyIcon($hIcon)
Next

для кнопки обновления:

Код: AutoIt [Выделить]
$Icon_Ref = _ResGetAsImage('#203',-1)
$Button_HotFixesUpdate = _GUICtrlCreateButtonEx4("Обновить", 510, 400, 85, 33, $Icon_Ref, -5)

и опять облом..

Немного сократил код для лучшей ориентации. Новый сокращенный код скрипта:

#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_icon=Windows.ico
#AutoIt3Wrapper_UseUpx=n
#AutoIt3Wrapper_Res_Description=Resources Test Script
#AutoIt3Wrapper_Res_Fileversion=1.0.0.0
#AutoIt3Wrapper_Res_Language=1033
#AutoIt3Wrapper_Res_Icon_Add=error.ico
#AutoIt3Wrapper_Res_Icon_Add=ok.ico
#AutoIt3Wrapper_Res_Icon_Add=refresh.ico
#AutoIt3Wrapper_Run_AU3Check=n
#AutoIt3Wrapper_Run_After=ResHacker.exe -add %out%, %out%, MySound.wav, SOUND, 200, 0
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
#include <ButtonConstants.au3>
#include <Constants.au3>
#include <GuiButton.au3>
#include <GUIConstantsEx.au3>
#include <GuiImageList.au3>
#include <Icons.au3>
#include <WinAPI.au3>
#include <GUIConstantsEx.au3>

#Include <Resources.au3>

Global $Pic1_1, $Pic1_2, $sLogI1_1, $sLogI1_2, $hIcon, $Width = 14, $Height = 14
Global $sLog1_2, $sLog1_1

$Icon_Ok = _ResGetAsImage('#201', -1)
$Icon_Er = _ResGetAsImage('#202',-1)

Global $aIcons[2] = [$Icon_Er, $Icon_Ok ]
;~ Global $aIcons[2] = ['error.ico', 'Ok.ico' ]
For $i = 0 To 1
$hIcon = _Icons_Icon_Extract($aIcons[$i], 0, $Width, $Height)
$aIcons[$i] = _Icons_Bitmap_CreateFromIcon($hIcon)
_WinAPI_DestroyIcon($hIcon)
Next

Global $hImageListRefresh = _GUIImageList_Create(16, 16, 5)


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")
$Icon_Ref = _ResGetAsImage('#203',-1)
$Button_HotFixesUpdate = _GUICtrlCreateButtonEx4("Обновить", 510, 400, 85, 33, $Icon_Ref, -5)
;~ $Button_HotFixesUpdate = _GUICtrlCreateButtonEx4("Обновить", 510, 400, 85, 33, 'refresh.ico', -5)
GUICtrlSetTip(-1, "Обновить текущее состояние вкладки")
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)


$Pic1_1 = GUICtrlCreatePic('', 115, 348, $Width, $Height)
$Pic1_2 = GUICtrlCreatePic('', 115, 361, $Width, $Height)
; запуск и сбор информации о текущем состоянии служб
_ServicesStat()

GUICtrlCreateTabItem("")

GUISetState()
_ResPlaySound('#200')
While 1
Sleep(100)
WEnd

Func CLOSEClicked()
Exit
EndFunc

Func _GUICtrlCreateButtonEx4($sText, $iLeft, $iTop, $iWidth = -1, $iHeight = -1, $sIconFile = "", $iIconIndex = 0)
Local $nButton = GUICtrlCreateButton($sText, $iLeft, $iTop, $iWidth, $iHeight)
_GUIImageList_AddIcon($hImageListRefresh, $sIconFile, $iIconIndex)
_GUICtrlButton_SetImageList($nButton, $hImageListRefresh)
Return $nButton
EndFunc


;; Hotfixes Section ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; функция кнопки "Обновить" обновление информации о текущем состоянии служб
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, $STDOUT_CHILD)
; запрос информации о типе запуска служб (авто, вручную, отключено)
$hIPconfig1_2 = Run('sc qc wuauserv', '', @SW_HIDE, $STDOUT_CHILD)

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')

; программиорование отображение информации о службах через иконки

_SetHImage($Pic1_1, $aIcons[$sLog1_1 = 4])
_SetHImage($Pic1_2, $aIcons[$sLog1_2=2])

EndFunc


PS Просмотрел полученный скомпилированный файл при помощи ResHacker - ok.ico и error.ico просматриваются, refresh. ico при попытке просмотра выдает "отказано в доступе".
Вопросы: 1. я правильно брал номера иконок из секции Icon Group?,
2. означает ли сообщение "отказано в доступе@? что иконка встроилась некорректно?

FlatX007
30-09-2010, 19:15
Ой как всё трудно ...

http://ipicture.ru/uploads/100930/BZR061RXI6.jpg (http://ipicture.ru/Gallery/Viewfull/1369992.html)


#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Compression=4
#AutoIt3Wrapper_UseUpx=n
#AutoIt3Wrapper_outfile=Output\Test.exe
#AutoIt3Wrapper_Run_After=Utilities\ResHacker\ResHacker.exe -delete %out%, %out%, DIALOG, 1000,
#AutoIt3Wrapper_Run_After=Utilities\ResHacker\ResHacker.exe -delete %out%, %out%, ICON, 162,
#AutoIt3Wrapper_Run_After=Utilities\ResHacker\ResHacker.exe -delete %out%, %out%, ICON, 164,
#AutoIt3Wrapper_Run_After=Utilities\ResHacker\ResHacker.exe -delete %out%, %out%, MENU, 166,
#AutoIt3Wrapper_Run_After=Utilities\ResHacker\ResHacker.exe -delete %out%, %out%, ICON, 169,
#AutoIt3Wrapper_Run_After=Utilities\ResHacker\ResHacker.exe -add %out%, %out%, Ico\Tools.ico, Icon, 0, 0
#AutoIt3Wrapper_Run_After=Utilities\ResHacker\ResHacker.exe -add %out%, %out%, Ico\Globe.ico, Icon, 1, 0
#AutoIt3Wrapper_Run_After=Utilities\ResHacker\ResHacker.exe -add %out%, %out%, Ico\Restart.ico, Icon, 2, 0
#AutoIt3Wrapper_Run_After=Utilities\ResHacker\ResHacker.exe -add %out%, %out%, Ico\Settings.ico, Icon, 3, 0
#AutoIt3Wrapper_Run_After=Utilities\ResHacker\ResHacker.exe -add %out%, %out%, Ico\Time.ico, Icon, 4, 0
#AutoIt3Wrapper_Run_After=Utilities\ResHacker\ResHacker.exe -add %out%, %out%, Ico\Aide.ico, Icon, 5, 0
#AutoIt3Wrapper_Run_After=Utilities\ResHacker\ResHacker.exe -add %out%, %out%, Ico\!.ico, Icon, 6, 0
#AutoIt3Wrapper_Run_After=Utilities\ResHacker\ResHacker.exe -add %out%, %out%, Ico\RSS.ico, Icon, 7, 0
#AutoIt3Wrapper_Run_After=Utilities\ResHacker\ResHacker.exe -add %out%, %out%, Ico\Mail.ico, Icon, 8, 0
#AutoIt3Wrapper_Run_After=Utilities\ResHacker\ResHacker.exe -add %out%, %out%, Ico\About.ico, Icon, 9, 0
#AutoIt3Wrapper_Run_After=Utilities\ResHacker\ResHacker.exe -add %out%, %out%, Ico\OFF.ico, Icon, 10, 0
#AutoIt3Wrapper_Run_After=Utilities\ResHacker\ResHacker.exe -add %out%, %out%, Ico\Oui.ico, Icon, 11, 0
#AutoIt3Wrapper_Run_After=Utilities\ResHacker\ResHacker.exe -add %out%, %out%, Ico\Transp.ico, Icon, 12, 0
#AutoIt3Wrapper_Run_After=Utilities\ResHacker\ResHacker.exe -add %out%, %out%, Ico\Plus.ico, Icon, 13, 0
#AutoIt3Wrapper_Run_After=Utilities\ResHacker\ResHacker.exe -add %out%, %out%, Ico\ReadMe.ico, Icon, 14, 0
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****

#include <ButtonConstants.au3>
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#Include <GuiButton.au3>
#Include <GuiImageList.au3>

Global $Button[15], $hImageList[15]

$Form1 = GUICreate("", 150, 600, 217, 131)
For $i = 0 To 14
$Button[$i] = GUICtrlCreateButton($i, 30, 43 * $i, 75, 41, 0)
Next

If @Compiled Then
For $iList = 0 To 14

$hImageList[$iList] = _GUIImageList_Create(32, 32, 5, 3, 6)

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

For $f = 0 To UBound($aImage) - 1
_GUIImageList_AddIcon($hImageList[$iList], @ScriptFullPath, $aImage[$f], True)
Next

_GUICtrlButton_SetImageList($Button[$iList], $hImageList[$iList])

Next
EndIf

GUISetState(@SW_SHOW)

While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit

EndSwitch
WEnd


Мой полный пример :) (http://rghost.ru/2774543)

saavaage
01-10-2010, 18:33
FlatX007, с вставкой в кнопки разобрался, спасибо. Есть ли возможность вставить n конкретных иконкок (в моем случае 4) из массива $hImageList[15] в массив $aIcons[2]?

в моем коде это:

Global $aIcons[2] = ['error.ico', 'Ok.ico' ]
For $i = 0 To 1
$hIcon = _Icons_Icon_Extract($aIcons[$i], 0, $Width, $Height)
$aIcons[$i] = _Icons_Bitmap_CreateFromIcon($hIcon)
_WinAPI_DestroyIcon($hIcon)
Next

Пробовал через _GUIImageList_GetIcon, но не получилось.

Дело в том, что не нашел функции, аналогичной _GUICtrlButton_SetImageList, но только для Pics (мне необходимо разместить иконку в конкретном месте вкладки Tab), не делать же это через button...

PS не серчай, я всегда стараюсь сначала сам решить проблему, но тут туплю и хоть убейся...

FlatX007
01-10-2010, 18:47
а может так, я может не понимаю всю глубину проблемы.
$Icon1 = GUICtrlCreateIcon(@ScriptFullPath, 1, 16, 40, 48, 48)

saavaage
01-10-2010, 19:25
FlatX007, да, можно! Я почему-то думал, что эта функция не применяется для вкладок, только для формы в целом.

Вопрос - а вариант из массива в массив реализуем или нет?

FlatX007
01-10-2010, 19:41
Вопрос - а вариант из массива в массив реализуем или нет? »

Не понял если честно зачем массив.

saavaage
01-10-2010, 19:55
FlatX007, пока только 1 причина - слишком много прийдется переделывать. Так все было завязано на нем. Если бы удалось закинуть иконки в него, то этим все и ограничилось бы. Ну и любопытство, конечно. Я пытался, но не получилось. Вот подумал, что Вы подскажете и мне знаний добавится в "копилку".

Ладно, спасибо Вам пребольшое.

FlatX007
01-10-2010, 20:11
$aIcons[2] = [1, 2]

$Icon1 = GUICtrlCreateIcon(@ScriptFullPath, $aIcons[0], 16, 40, 48, 48)
$Icon2 = GUICtrlCreateIcon(@ScriptFullPath, $aIcons[1], 16, 40, 48, 48)

saavaage
01-10-2010, 20:31
FlatX007, что-то у меня есть смутное подозрение., что на нескольких вкладках это не пройдет. Я имею ввиду вариант с
$Icon1 = GUICtrlCreateIcon(@ScriptFullPath, $aIcons[0], 16, 40, 48, 48)
Сейчас буду проверять...

saavaage
01-10-2010, 23:22
FlatX007, к сожалению, похоже данный вариант не имеет привязки к конкретной вкладке и при обновлении индикаторов, происходит их отрисовка на всех вкладках формы.
Вот такие котелки...

FlatX007
02-10-2010, 01:18
Совсем не так =) ? доработй этот пример чтобы иконки показывались одновременно.
$Form1 = GUICreate("", 228, 231)
$Tab1 = GUICtrlCreateTab(24, 16, 185, 193)
$TabSheet1 = GUICtrlCreateTabItem("1")
$Icon2 = GUICtrlCreateIcon("shell32.dll", 23, 120, 144, 48, 48)
$TabSheet2 = GUICtrlCreateTabItem("2")
$Icon1 = GUICtrlCreateIcon("shell32.dll", 28, 40, 48, 48, 48)
GUICtrlCreateTabItem("")
GUISetState()

Do
Until GUIGetMsg() = -3

saavaage
02-10-2010, 02:45
FlatX007, почему тогда у меня не работает этот вариант:

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


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()
GUICtrlCreateIcon(@ScriptFullPath, $Pic1_1, 115, 348, 16, 16)
GUICtrlCreateIcon(@ScriptFullPath, $Pic1_2, 115, 361, 16, 16)


; запуск и сбор информации о текущем состоянии служб
$Hotfix = GUICtrlCreateTabItem("Hotfix")

GUICtrlCreateTabItem("")

GUISetState()

While 1
Sleep(100)
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, $STDOUT_CHILD)
; запрос информации о типе запуска служб (авто, вручную, отключено)
$hIPconfig1_2 = Run('sc qc wuauserv', '', @SW_HIDE, $STDOUT_CHILD)

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)
Else
GuiCtrlSetData($Pic1_1, 1)
EndIf

IF $sLog1_2 = 2 Then
GuiCtrlSetData($Pic1_2, 2)
Else
GuiCtrlSetData($Pic1_2, 1)
EndIf

EndFunc

А именно, не передается информация из
GuiCtrlSetData($Pic1_1, 1) и
GuiCtrlSetData($Pic1_2, 1)

в

GUICtrlCreateIcon(@ScriptFullPath, $Pic1_1, 115, 348, 16, 16)
GUICtrlCreateIcon(@ScriptFullPath, $Pic1_2, 115, 361, 16, 16)

Дело в том, что в моем случае иконки не статичные, а должны меняться в зависимости от состояния службы... А при нажатии на кнопку "Обновить" должно повторно обновляться состояние иконок в зависимости от состояния службы на данный момент.

FlatX007
02-10-2010, 03:16
Вроде на моём примере показано что каждую иконку надо располагать на своей вкладке!!
И можно рабочие примеры выкладывать, мне самому приходится инклиды подставлять.

#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)

$Hotfix = GUICtrlCreateTabItem("Hotfix")
$Icon_Hotfix = GUICtrlCreateIcon("shell32.dll", 28, 115, 361, 16, 16)

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", 22)
EndIf

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

EndFunc

saavaage
02-10-2010, 03:18
FlatX007, они обе должны быть на одной... Рабочий не выкладывал, т.к. пришлось бы и иконки кидать...Думал Вы навскидку скажете.. Пардон.




© OSzone.net 2001-2012