Что нового

[Окна, Диалоги] Как добавить иконку в заголовок MsgBox и в панель задач после запуска скрипта

Сообщения
94
Репутация
-1
Как добавить иконку в заголовок MsgBox и в панель задач после запуска скрипта?

Код:
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Icon=Install.ico
#AutoIt3Wrapper_Compression=4
#AutoIt3Wrapper_UseUpx=y
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
Global $sESETVer, $sHKLM = "HKLM"
If @OSArch <> "X86" Then $sHKLM &= 64
; Читает версию из реестра
$sESETVer = RegRead($sHKLM & "\SOFTWARE\ESET\ESET Security\CurrentVersion\Info", "ProductVersion")
; Сравниваем версию из реестра и из msi файла
$iResult = StringCompare(Execute_MSI_Query(@ScriptDir & '\ESET.msi','ProductVersion'), $sESETVer)
; Записываем результат совпадения версии
IniWrite('Result.ini','Result',$iResult, "Установка прошла успешно!")
; Читает из INI-файла параметр 'Key' в секции 'Result'.
$sRead = IniRead('Result.ini','Result','0','Установка была прервана!')
; При отсутствии ключа возвращается значение по умолчанию
MsgBox(48,'Установка — ESET',$sRead)
FileDelete('Result.ini')
Func Execute_MSI_Query($MSIPath, $PropertyName)
    If FileExists($MSIPath) And $PropertyName <> '' Then

        Local $Query = "SELECT Value FROM Property WHERE Property = '" & $PropertyName & "'"

        $oInstaller = ObjCreate("WindowsInstaller.Installer")
        $oDB = $oInstaller.OpenDataBase($MSIPath, 0)
        $oView = $oDB.OpenView($Query)

        $oView.Execute()

        $oRecords = $oView.Fetch
        $oPropValue = $oRecords.StringData(1)

        If $oPropValue <> "" Then
            Return $oPropValue
        EndIf

    EndIf

    Return ""
EndFunc
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
создать свое окно, которое будет имитировать окно сообщений
 

joiner

Модератор
Локальный модератор
Сообщения
3,556
Репутация
628
это всего лишь набросок. можно подгонять окно под размер строки(смотреть тему)
соответственно, можно использовать любой цвет, кнопки, картинки и прочее

Код:
#Region ;**** Directives created by AutoIt3Wrapper_GUI ****
#AutoIt3Wrapper_Icon=Install.ico
#AutoIt3Wrapper_Compression=4
#AutoIt3Wrapper_UseUpx=y
#EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
Global $sESETVer, $sHKLM = "HKLM"
If @OSArch <> "X86" Then $sHKLM &= 64
; Читает версию из реестра
$sESETVer = RegRead($sHKLM & "\SOFTWARE\ESET\ESET Security\CurrentVersion\Info", "ProductVersion")
; Сравниваем версию из реестра и из msi файла
$iResult = StringCompare(Execute_MSI_Query(@ScriptDir & '\ESET.msi', 'ProductVersion'), $sESETVer)
; Записываем результат совпадения версии
IniWrite('Result.ini', 'Result', $iResult, "Установка прошла успешно!")
; Читает из INI-файла параметр 'Key' в секции 'Result'.
$sRead = IniRead('Result.ini', 'Result', '0', 'Установка была прервана!')
; При отсутствии ключа возвращается значение по умолчанию
_GUIMSG('Установка — ESET', 200, 60, -1, -1, $sRead)
FileDelete('Result.ini')
Func Execute_MSI_Query($MSIPath, $PropertyName)
	If FileExists($MSIPath) And $PropertyName <> '' Then

		Local $Query = "SELECT Value FROM Property WHERE Property = '" & $PropertyName & "'"

		$oInstaller = ObjCreate("WindowsInstaller.Installer")
		$oDB = $oInstaller.OpenDataBase($MSIPath, 0)
		$oView = $oDB.OpenView($Query)

		$oView.Execute()

		$oRecords = $oView.Fetch
		$oPropValue = $oRecords.StringData(1)

		If $oPropValue <> "" Then
			Return $oPropValue
		EndIf

	EndIf

	Return ""
EndFunc   ;==>Execute_MSI_Query

Func _GUIMSG($Title, $w, $h, $x, $y, $text)
	Local $hGui = GUICreate($Title, $w, $h, $x, $y)
	Local $Label = GUICtrlCreateLabel($text, $x + 10, $y + 25, $w - 20, 30)
	GUISetIcon('shell32.dll', -155);смотреть описание функции
	GUISetState()
	While 1
		Switch GUIGetMsg()
			Case -3
				GUIDelete($hGui)
				Return
		EndSwitch
	WEnd
EndFunc   ;==>_GUIMSG
 
Верх