• 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
    [autoit]


    #Include <GUIConstants.au3>

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $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

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $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

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $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

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ; 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

    [/autoit] [autoit][/autoit] [autoit]

    ;===============================================================================
    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

    [/autoit]

    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.

  • Sehr gute ID.

    Glatt zum drauf auf bauen.


    LG und MARRY X-MAS

    L I N A

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    k3mrwmIBHejryPvylQSFieDF5f3VOnk6iLAVBGVhKQegrFuWr3iraNIblLweSW4WgqI0SrRbS7U5jI3sn50R4a15Cthu1bEr

  • Hi,

    gefällt mir Super , bis auf dass, dass alles installaiert werden muss, könnte man da nicht z.b. einen überspringen button einbauen ?