- Offizieller Beitrag
Hallo!
Ich habe eine Funktion geschrieben, die eine recht universelle MsgBox zum Installieren von Programmen erstellt.
Man kann einige Parameter beeinflussen, wie z.B. die Hintergrundfarbe, die Fortschrittsanzeige, das angezeigte Bild, usw...
Alles weitere wird in den Kommentaren erklärt.
Spoiler anzeigen
#Include <GUIConstants.au3>
$text = 'Installation von Firefox (Beispiel).' & @CRLF & 'Dieses Installations-Script wurde geschrieben von Oscar.' & @CRLF & 'Es ist universell einsetzbar und kann beliebig geändert werden.'
[/autoit] [autoit][/autoit] [autoit]$res = _InstBox('Installation', $text, @ScriptDir & '\firefox.jpg', 0, True, 0xFFFFFF)
Switch $res
Case 0
Exit; User hat auf 'Abbrechen' geklickt
Case 1
; hier kommt der erste Installationsschritt
Case 2
; hier evtl. Code für 'Überspringen', ansonsten leer lassen
EndSwitch
$text = 'Installation von Thunderbird (Beispiel).' & @CRLF & 'Der Text für den nächsten Installationsschritt'
[/autoit] [autoit][/autoit] [autoit]$res = _InstBox('Installation Schritt 1/3', $text, @ScriptDir & '\thunderbird.jpg', 33, False, 0xFFFFFF)
Switch $res
Case 0
Exit; User hat auf 'Abbrechen' geklickt
Case 1
; hier kommt der zweite Installationsschritt
Case 2
; hier evtl. Code für 'Überspringen', ansonsten leer lassen
EndSwitch
$text = 'Installation von IrfanView (Beispiel).' & @CRLF & 'Der Text für den übernächsten Installationsschritt'
[/autoit] [autoit][/autoit] [autoit]$res = _InstBox('Installation Schritt 2/3', $text, @ScriptDir & '\irfanview.jpg', 66, False, 0xFFFFFF)
Switch $res
Case 0
Exit; User hat auf 'Abbrechen' geklickt
Case 1
; hier kommt der dritte Installationsschritt
Case 2
; hier evtl. Code für 'Überspringen', ansonsten leer lassen
EndSwitch
; das kannst Du endlos fortsetzen
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]$text = 'Alle Programme wurden installiert.' & @CRLF & 'Der Text für den abschließenden Installationsschritt'
[/autoit] [autoit][/autoit] [autoit]_InstBox('Installation Beendet', $text, @ScriptDir & '\ende.jpg', 100, False, 0xFFFFFF)
[/autoit] [autoit][/autoit] [autoit]; hier ist das Ende erreicht
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit];===============================================================================
; Funktion Name: _InstBox()
; AutoIt-Version: 3.2.10.0
; Language: German
; Version: 1.0.0.2
; Date: 03. Jan. 2008
; Author: Thomas Stephan <oscar at elektronik-kurs dot de>
;
; Beschreibung:
; Diese Funktion erzeugt eine Installations-Box, mit der man Programminstallationen
; benutzerunterstützt vornehmen kann.
;
; Funktionsaufruf: _InstBox($Title, $Text, $Pic, $ProgBar, $bSkip, [$BackgrCol = 0xDDDDDD])
; $Title = Text, der als Fenstertitel verwendet wird
; $Text = Erste Zeile (bis zum 1. CRLF) wird als Überschrift verwendet. Der Rest
; ist normaler Text
; $Pic = Pfad und Dateiname eines Bildes (max. 150x150 Pixel).
; $ProgBar = Prozentangabe (0...100) für die ProgressBar
; Diese Angabe beeinflusst außerdem die Buttonanzeige:
; 0 Button1 = 'Abbrechen' und Button3 = 'Start'
; 100 Button1 = [nicht vorhanden] und Button3 = 'Beenden'
; 1...99 Button1 = 'Abbrechen' und Button3 = 'Weiter...'
; $bSkip = False = 'Überspringen-Button' nicht vorhanden
; True = 'Überspringen-Button' vorhanden
; [$BackgrCol] = Hintergrundfarbe (Hex-Wert RGB), wenn nicht angegeben, dann grau
;
; Rückgabewerte:
; 0 = auf 'Abbrechen' geklickt
; 1 = auf 'Start', 'Weiter...' oder 'Beenden' geklickt
; 2 = auf 'Überspringen' geklickt
;===============================================================================
Func _InstBox($Title, $Text, $Pic, $ProgBar, $bSkip, $BackgrCol = 0xDDDDDD)
If Not IsBool($bSkip) Then $bSkip = False
If ($ProgBar < 0) Or ($ProgBar > 100) Then $ProgBar = 0
Local $w = 520, $h = 230, $hOpt = Opt('GUIEventOptions')
Opt('GUIEventOptions', 0)
$gui = GUICreate($Title, $w, $h, -1, -1, $WS_DLGFRAME)
GUISetBKColor($BackgrCol)
GUICtrlCreatePic($Pic, 10, 10)
StringRegExp($Text, '\r', 1)
$e = @extended
$Head = StringLeft($Text, $e)
$Text = StringMid($Text, $e + 1)
If $Head <> '' Then
GUICtrlCreateLabel($Head, 170, 10, $w - 200, 40)
GUICtrlSetFont(-1, 14, 800, 0, 'Times New Roman')
EndIf
GUICtrlCreateLabel($Text, 170, 50, $w - 180, $h - 120)
GUICtrlSetFont(-1, 11, 400, 0, 'Times New Roman')
$PB = GUICtrlCreateProgress(170, $h - 85, $w - 180, 15, $PBS_SMOOTH)
GUICtrlSetData($PB, $ProgBar)
If $ProgBar < 100 Then
$Button1 = GUICtrlCreateButton('Abbrechen', $w - 220 - 110 * $bSkip, $h - 55, 100, 24)
GUICtrlSetFont(-1, 10, 400, 0, 'Arial')
If $bSkip Then
$Button2 = GUICtrlCreateButton('Überspringen', $w - 220, $h - 55, 100, 24)
GUICtrlSetFont(-1, 10, 400, 0, 'Arial')
Else
$Button2 = -1
EndIf
Else
$Button1 = -1
$Button2 = -1
EndIf
Switch $ProgBar
Case 0
$go = 'Start'
Case 100
$go = 'Beenden'
Case Else
$go = 'Weiter...'
EndSwitch
$Button3 = GUICtrlCreateButton($go, $w - 110, $h - 55, 100, 24)
GUICtrlSetFont(-1, 10, 400, 0, 'Arial')
GUICtrlSetState(-1, $GUI_FOCUS)
GUISetState()
While 1
$msg = GUIGetMsg()
Select
Case $msg = $Button1
Opt('GUIEventOptions', $hOpt)
GuiDelete($gui)
Return (0)
Case $msg = $Button2
Opt('GUIEventOptions', $hOpt)
GuiDelete($gui)
Return (2)
Case $msg = $Button3
Opt('GUIEventOptions', $hOpt)
GuiDelete($gui)
Return (1)
EndSelect
WEnd
EndFunc
Für das Beispiel werden noch die vier Bilder benötigt. Die findet ihr zusammen mit dem Script im ZIP-Archiv (Anhang).
Vielleicht kann es ja irgendwer gebrauchen.
Edit: Es gibt jetzt auch einen 'Überspringen'-Button. Damit wird dann die Auswertung etwas umfangreicher. Schaut euch einfach das Beispielscript an, dann versteht ihr das bestimmt.
Edit2: Für den 'Überspringen'-Button gibt es jetzt einen zusätzlichen Übergabeparameter. Bei 'True' gibt es einen Überspringen-Button und bei 'False' gibt es keinen.