Skript-Loader für IOM

    • Offizieller Beitrag

    da hat der ende-tag für autoit und spoiler gefehlt!

  • Danke. Ich hab aber die ganzen Funktionen noch reingestellt, wo sind die geblieben.


    Wer kann die FTP-Funktion für das Programm schreiben.

    Ich stell das Skript nochmal rein, diesmal mit allem

    Spoiler anzeigen
    [autoit][/autoit] [autoit][/autoit] [autoit]

    #cs ----------------------------------------------------------------------------

    AutoIt-Version: v3.2.0.1

    Programmname: Skript-Loader für IOM
    Version: ...

    Autor: Manuel Kübler
    Mail: [email='mk-software@gmx.de'][/email]
    Copyrigtht: © Manuel Kübler 2006

    Skript Function:

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

    #ce ----------------------------------------------------------------------------

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

    ; ----------------------------------------------------------------------------

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

    ; Todo:

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

    ; - FTP-Funktion
    ; -> Skripte auf FTP hochladen
    ; -> Skripte von FTP in Temp-Ordner herunterladen
    ; - Offen

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

    ; - INI-Dateien
    ; -> Jedes Programm erhält eine individuelle INI-Datei
    ; -> Programm-Name, Autor, Kategorie, ...
    ; -> Für INI-Aufbau wird ein extra Programm entwickelt
    ; - Manuel Kübler (INI-Aufbau), Offen

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

    ; - Mail-Funktion
    ; -> Wenn Skript nicht existiert, wird der Autor informiert.
    ; -> Autor informiert Benutzer wenn Skript verfügbar ist.
    ; - Manuel Kübler

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

    ; Done:

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

    ; - Bug in KategorieGUI
    ; -> Buttons anklickbar machen
    ; - Manuel Kübler & peethebee (Done.)

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

    ; - Programm-Liste
    ; -> Liste über alle integrierten Programme
    ; - Manuel Kübler (Done.)

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

    ; ----------------------------------------------------------------------------

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

    ; ============================================================================
    ; ----------------------------------------
    ; AutoIT Options
    ; ----------------------------------------
    Opt("GUIOnEventMode", 1)

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

    ; ----------------------------------------
    ; Includes
    ; ----------------------------------------
    #include <GUIConstants.au3>
    #include <INet.au3>

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

    ; ----------------------------------------
    ; Variablen-Deklarationen
    ; ----------------------------------------
    Global $File = @TempDir & "\Programme.iom"
    Global $Target_IOM = RegRead("HKLM\SOFTWARE\PC Magazin\Install-O-Matic", "HDD Path")

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

    ; ----------------------------------------
    ; Mail
    ; ----------------------------------------
    $Mail_To = "mk-software@gmx.de"
    $Mail_Subject =
    $Mail_Body =

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

    If @OSVersion <> "Win_xp" Then
    If MsgBox(16, "Nicht unterstützte Windows-Version", "Der Skript-Loader für die Install-O-Matic wurde für Microsoft Windows XP entwickelt und getestet. Deshalb wird nicht empfohlen, es unter diesem Betriebssystem (" & @OSVersion & ") zu starten.") <> 6 Then Exit
    EndIf

    If Not FileExists($Target_IOM) Then
    If MsgBox(16, "IOM konnte nicht gefunden werden", "Bitte kopieren Sie Install-O-Matic mit der Hilfe des Install-O-Matic Manager 2.00 von der PC Magazin 05/2006 DVD auf Ihre Festplatte.") <> 6 Then Exit
    EndIf
    ; ============================================================================

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

    ; ============================================================================
    ; ----------------------------------------
    ; GUIs
    ; ----------------------------------------
    ; ----------------------------------------------------------------------------

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

    ; ----------------------------------------
    ; MainGUI
    ; ----------------------------------------
    ; Fenster erzeugen und Close-Ereignis behandeln
    $mainGUI = GuiCreate("Skript-Loader für IOM", 276, 113)
    GUISetOnEvent($GUI_EVENT_CLOSE, "_close")
    ;
    ; Menü
    ; Datei
    $gui_mnu_file = GUICtrlCreateMenu("&Datei")
    ; Beenden
    $gui_mnu_file_close = GUICtrlCreateMenuitem("Beenden", $gui_mnu_file)
    GUICtrlSetOnEvent(-1, "_close")
    ; Hilfe
    $gui_mnu_help = GUICtrlCreateMenu("&Hilfe")
    ; Welche Programme wurden bereits integriert?
    $gui_mnu_help_programmliste = GUICtrlCreateMenuitem("Welche Programme wurden bereits integriert?", $gui_mnu_help)
    GUICtrlSetOnEvent(-1, "_programmliste_open")
    ; Credits
    $gui_mnu_help_credits = GUICtrlCreateMenuitem("Credits", $gui_mnu_help)
    GUICtrlSetOnEvent(-1, "_credits")
    ; Info
    $gui_mnu_help_info = GUICtrlCreateMenuitem("Info", $gui_mnu_help)
    GUICtrlSetOnEvent(-1, "_info")
    ;
    ; BUTTONS erzeugen und Klick-Ereignisse den Funktionen zuordnen
    $download = GUICtrlCreateButton("Skripte downloaden", 10, 20, 120, 30)
    GUICtrlSetOnEvent($download, "_download")
    $upload = GUICtrlCreateButton("Skripte uploaden", 143, 20, 120, 30)
    GUICtrlSetOnEvent($upload, "_upload")

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

    ; Fenster anzeigen
    GUISetState(@SW_SHOW, $mainGUI)
    ; ----------------------------------------------------------------------------

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

    ; ----------------------------------------
    ; Programm-ListeGUI
    ; ----------------------------------------
    ; Fenster erzeugen und Close-Ereignis behandeln
    $ProgrammlisteGUI = GuiCreate("Welche Programme wurden bereits integriert?", 400, 383)
    GUISetOnEvent($GUI_EVENT_CLOSE, "_programmliste_close")

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

    $Programmliste_programm_liste = GUICtrlCreateList("", 20, 20, 360, 300)
    _programmliste_scan_programs()

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

    $Programmliste_aktualisieren = GUICtrlCreateButton("Ak&tualisieren", 25, 333, 150, 30)
    GUICtrlSetOnEvent($Programmliste_aktualisieren, "_programmliste_scan_programs")

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

    $Programmliste_close = GUICtrlCreateButton("Schließen", 225, 333, 150, 30)
    GUICtrlSetOnEvent($Programmliste_close, "_programmliste_close")

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

    ; Fenster anzeigen
    GUISetState(@SW_HIDE, $ProgrammlisteGUI)
    ; ============================================================================

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

    ; ============================================================================
    ; ----------------------------------------
    ; Funktionen
    ; ----------------------------------------
    ; ----------------------------------------------------------------------------

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

    ; ----------------------------------------
    ; Main-Funktionen
    ; ----------------------------------------
    Func _download()

    _disablen()

    ; Name des Programms
    $Name_Open = InputBox("Programm-Name", "Bitte geben Sie den Namen des zu integrierenden Programms ein.")
    ; Prüfe ob Programmname-Datei existiert, wenn ja lösche Datei und erstelle neu, wenn nein, erstelle neu
    If FileExists($File) Then
    FileDelete($File)
    FileWrite($File, $Name_Open)
    Else
    FileWrite($File, $Name_Open)
    EndIf
    ; Lese Programmname
    $Programmname = FileReadLine($File, 1)
    If MsgBox(4, $Programmname & "-Skript downloaden?", "Möchten Sie das Skript für " & $Programmname & " vom FTP-Server herunterladen?") = 6 Then
    _FTP()
    Else

    ; Wenn Skript im FTP nicht existiert, wird der Autor informiert
    ; Lese Programmname
    $Programmname = FileReadLine($File, 1)
    ; Prüfe ob Programmname existiert
    If FileExists($Programmname)
    ; Hier kommt der Quelltext für den Download rein
    Else
    ; Skript wurde nicht gefunden
    If MsgBox(64, $Programmname & "-Skript nicht gefunden", "Das Skript für das Programm " & $Programmname & " wurde nicht gefunden." & @CRLF & "Der Autor wurde über das fehlende Skript informiert. Er schickt ihnen eine E-Mail wenn das Skript verfügbar ist.") Then
    ; Autor wird informiert
    _INetMail($Mail_To, $Programmname & "-Skript wurde nicht gefunden", "Hallo Herr Kübler," & @CRLF & "Das Skript für das Programm " & $Programmname & " wurde nicht gefunden. Könnten Sie es bitte auf den FTP-Server packen.")
    EndIf
    EndIf

    ; Hier kommt der FTP-Quelltext rein

    If FileExists(@TempDir & "\*.au3") Then
    ; Lese Programmname
    $Programmname = FileReadLine($File, 1)
    $var = FileSelectFolder("Wo möchten Sie das Skript für " & $Programmname & " speichern.", "", 1 + 2)
    If MsgBox(64, "Info", "Programm-Name: " & $Programmname & @CRLF & 'Skript-Ort: "' & $var & '"') Then
    FileDelete($File)
    EndIf
    EndIf

    _enablen()

    EndFunc ;==>_download

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

    Func _upload()

    _disablen()

    ; Name des Programms
    $Name_Open = InputBox("Programm-Name", "Bitte geben Sie den Namen des zu uploadenden Programms ein.")
    If MsgBox(4, $Name_Open & " uploaden", 'Möchten Sie wirklich das Skript für "' & $Name_Open & '" auf den FTP-Server hochladen?') = 6 Then
    $Target_Scripts = FileOpenDialog('Bitte wählen Sie das Skript für das Programm "' & $Name_Open & '" das upgeloadet werden sollte.', @MyDocumentsDir, "AutoIT Skripte (*.au3)", 1 + 2 )
    _FTP()
    If @error Then
    TrayTip("FTP-Verbindung", "Die Verbindung zum FTP-Server konnte nicht hergestellt werden.", 5, 3)
    Else
    ; Lese Programmname
    $Programmname = FileReadLine($File, 1)
    $FTP_Target = _FTPMakeDir($FTP_Server, $Programmname)

    ; Hier kommt der FTP-Quelltext rein

    EndIf

    MsgBox(320, "Skripte uploaden", "Diese Schaltfläche hat keine Funktion.")

    _enablen()

    EndFunc ;==>_upload

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

    Func _credits()

    _disablen()

    MsgBox(320, "Credits", "Diese Schaltfläche hat keine Funktion.")

    _enablen()

    EndFunc ;==>_credits

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

    Func _info()

    _disablen()

    MsgBox(320, "Info", "Diese Schaltfläche hat keine Funktion.")

    _enablen()

    EndFunc ;==>_info

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

    Func _close()

    Exit

    EndFunc ;==>_close
    ; ----------------------------------------------------------------------------

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

    ; ----------------------------------------
    ; Programmliste-Funktionen
    ; ----------------------------------------
    Func _programmliste_open()

    GUISetState(@SW_SHOW, $ProgrammlisteGUI)
    GUISetState(@SW_HIDE, $mainGUI)

    EndFunc ;==>_programmliste_open

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

    Func _programmliste_close()

    GUISetState(@SW_SHOW, $mainGUI)
    GUISetState(@SW_HIDE, $ProgrammlisteGUI)

    EndFunc ;==>_programmliste_close

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

    ; Funktion von Install-O-Matic Manager 2.00 übernommen
    Func _programmliste_scan_programs()
    $items = ""

    ; Suche nach allen Dateien und Verzeichnissen
    $search = FileFindFirstFile($Target_IOM & "*")

    ; Überprüfen, ob die Suche erfolgreich war
    If $search = -1 Then
    MsgBox(0, "Fehler", "Es wurde keine Programme mehr in der Install-O-Matic gefunden...")
    EndIf

    While 1
    $result = FileFindNextFile($search)
    If @error Then ExitLoop

    If FileExists($Target_IOM & $result & "\install_iom_anwendungen.au3") Or FileExists($Target_IOM & $result & "\install_iom_essentials.au3") Or FileExists($Target_IOM & $result & "\install_iom_sicherheit.au3") Or FileExists($Target_IOM & $result & "\install_iom_sonstiges.au3") Then
    $items &= $result & "|"
    EndIf
    WEnd

    ; Suchhandle schließen
    FileClose($search)

    $items = StringTrimRight($items, 1)
    GUICtrlSetData($Programmliste_programm_liste, "") ; Liste leeren...
    GUICtrlSetData($Programmliste_programm_liste, $items) ; ...und neu befüllen
    EndFunc ;==>_programmliste_scan_programs
    ; ----------------------------------------------------------------------------

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

    ; ----------------------------------------
    ; FTP-Funktionen
    ; ----------------------------------------
    Func _FTP()

    ; Baue FTP-Verbindung auf
    $FTP_Open = _FTPOpen("Skript-Loader für IOM", 1, '', '', 0)
    ; Baue Verbdindung zum Server auf
    $Server = ""
    $User = ""
    $Pass = ""
    $SubDir = ""
    $Port = "21"
    $FTP_Server = _FTPConnect ($FTP_Open, $Server, $User, $Pass, $Port)

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

    EndFunc ;==>_FTP
    ; ----------------------------------------------------------------------------

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

    ; ----------------------------------------
    ; Disable & Enable-Funktionen
    ; ----------------------------------------
    Func _disablen()

    GUISetState($download, $GUI_DISABLE)
    GUISetState($upload, $GUI_DISABLE)

    EndFunc ;==>_disablen

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

    Func _enablen()

    GUICtrlSetState($download, $GUI_ENABLE)
    GUICtrlSetState($upload, $GUI_ENABLE)

    EndFunc ;==>_enablen
    ; ============================================================================

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

    While 1
    sleep(500)
    WEnd

    [/autoit]

    Der FTP-Quelltext muss bei der Funktion _FTP stehen.

    Die INI-Sache wurde speziell von BlackJack programmiert. Duch diese Funktion kann ich die Skripte verwalten.

    In dieser Variante sind die Sachen von BlackJack noch nicht oder nur teilweise eingebaut

    4 Mal editiert, zuletzt von DJMANU (8. September 2006 um 17:23)

    • Offizieller Beitrag

    Gelöscht hab ich nichts!

  • Ich stell jetzt mal eine aktuelle Version rein:

    Spoiler anzeigen
    [autoit]


    #cs ----------------------------------------------------------------------------

    AutoIt-Version: v3.2.0.1

    Programmname: Skript-Loader für IOM
    Version: ...

    Idee Manuel Kübler
    Programmierer: Manuel Kübler (GUIs, Funktionen, Mail)
    BlackJack (FTP, Info, Credits, INI-Creator)
    huggy (Online-Datenbank)
    peethebee (Info, Credits, Programm-Liste)

    Mail: [email='mk-software@gmx.de'][/email]
    Copyrigtht: © Manuel Kübler 2006

    Skript Function:
    ...

    Danke an BlackJack, huggy, peethebee!

    ----------------------------------------------------------------------------


    Todo:

    - Integration des IOM-Skriptes
    -> Fragen nach dem Download, ob man das Skript gleich integrieren will
    -> Install-O-Matic Manager 2.00 wird gestartet
    - Manuel Kübler

    - Info-Funktion
    -> Info-Funktion von Galenda übernehmen
    -> Anpassen an den Skript-Loader
    - BlackJack

    - FTP-Funktion
    -> Skripte auf FTP hochladen (Done.)
    -> Skripte von FTP in Temp-Ordner herunterladen
    - BlackJack

    - INI-Dateien
    -> Jedes Programm erhält eine individuelle INI-Datei
    -> Programm-Name, Autor, Kategorie, ...(Done.)
    -> Für INI-Aufbau wird ein extra Programm entwickelt (Done. by BlackJack)
    -> Ohne INI-Datei kein Upload (siehe INI-Datei erstellen)
    - Manuel Kübler (INI-Aufbau) (Done. by BlackJack), Offen


    Done:

    - INI-Datei erstellen
    -> Integrieren des Plug-Ins INI-Creator
    -> Menü-Eintrag erstellen
    -> Ohne INI-Datei kein Upload
    - BlackJack (Done.)

    - Credits
    -> Credits-Funktion von Galenda übernommen
    -> Angepasst an den Skript-Loader
    - BlackJack (Done.)

    - Mail-Funktion
    -> Wenn Skript nicht existiert, wird der Autor informiert.
    -> Autor informiert Benutzer wenn Skript verfügbar ist.
    - Manuel Kübler (Done.) !! Noch nicht verfügbar, erst wenn Func _download() steht !!

    - Programm-Liste
    -> Liste über alle integrierten Programme
    - Manuel Kübler (Done.)

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

    #ce ----------------------------------------------------------------------------

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

    ; ============================================================================
    ; ----------------------------------------
    ; AutoIT Options
    ; ----------------------------------------
    Opt("GUIOnEventMode", 1)

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

    ; ----------------------------------------
    ; Includes
    ; ----------------------------------------
    #Include <Array.au3>
    #include <Color.au3>
    #include <FTP.au3>
    #include <GUIConstants.au3>
    ;~ #include <INet.au3>

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

    ; ----------------------------------------
    ; Variablen-Deklarationen
    ; ----------------------------------------
    Global $File = @TempDir & "Programme.iom"
    Global $gui_dmy_1 = GUICtrlCreateDummy() ; Dummy (v.a. für AboutBox)
    Global $Target_IOM = RegRead("HKLMSOFTWAREPC MagazinInstall-O-Matic", "HDD Path")

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

    ; ----------------------------------------
    ; Mail
    ; ----------------------------------------
    ;~ $Mail_To = "mk-software@gmx.de"
    ;~ $Mail_Subject =
    ;~ $Mail_Body =

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

    If @OSVersion <> "WIN_XP" Then
    If MsgBox(16, "Nicht unterstützte Windows-Version", "Der Skript-Loader für die Install-O-Matic wurde für Microsoft Windows XP entwickelt und getestet. Deshalb wird nicht empfohlen, es unter diesem Betriebssystem (" & @OSVersion & ") zu starten.") <> 6 Then Exit
    EndIf

    If Not FileExists($Target_IOM) Then
    If MsgBox(16, "IOM konnte nicht gefunden werden", "Bitte kopieren Sie Install-O-Matic mit der Hilfe des Install-O-Matic Manager 2.00 von der PC Magazin 05/2006 DVD auf Ihre Festplatte.") <> 6 Then Exit
    EndIf
    ; ============================================================================

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

    ; ============================================================================
    ; ----------------------------------------
    ; GUIs
    ; ----------------------------------------
    ; ----------------------------------------------------------------------------

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

    ; ----------------------------------------
    ; MainGUI
    ; ----------------------------------------
    ; Fenster erzeugen und Close-Ereignis behandeln
    $mainGUI = GuiCreate("Skript-Loader für IOM", 276, 113)
    GUISetOnEvent($GUI_EVENT_CLOSE, "_close")
    ;
    ; Menü
    ; Datei
    $gui_mnu_file = GUICtrlCreateMenu("&Datei")
    ; INI-Datei erstellen
    $gui_mnu_file_close = GUICtrlCreateMenuitem("INI-Datei erstellen", $gui_mnu_file)
    GUICtrlSetOnEvent(-1, "_ini")
    ;
    $gui_mnu_file_close = GUICtrlCreateMenuitem("", $gui_mnu_file)
    ; Beenden
    $gui_mnu_file_close = GUICtrlCreateMenuitem("Beenden", $gui_mnu_file)
    GUICtrlSetOnEvent(-1, "_close")
    ; Hilfe
    $gui_mnu_help = GUICtrlCreateMenu("&Hilfe")
    ; Welche Programme wurden bereits integriert?
    $gui_mnu_help_programmliste = GUICtrlCreateMenuitem("Welche Programme wurden bereits integriert?", $gui_mnu_help)
    GUICtrlSetOnEvent(-1, "_programmliste_open")
    ;
    $gui_mnu_help_programmliste = GUICtrlCreateMenuitem("", $gui_mnu_help)
    ; Credits
    $gui_mnu_help_credits = GUICtrlCreateMenuitem("Credits", $gui_mnu_help)
    GUICtrlSetOnEvent(-1, "_credits")
    ; Info
    $gui_mnu_help_info = GUICtrlCreateMenuitem("Info", $gui_mnu_help)
    GUICtrlSetOnEvent(-1, "_info")
    ;
    ; BUTTONS erzeugen und Klick-Ereignisse den Funktionen zuordnen
    $download = GUICtrlCreateButton("Skripte downloaden", 10, 20, 120, 30)
    GUICtrlSetOnEvent($download, "_download")
    $upload = GUICtrlCreateButton("Skripte uploaden", 143, 20, 120, 30)
    GUICtrlSetOnEvent($upload, "_upload")

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

    ; Fenster anzeigen
    GUISetState(@SW_SHOW, $mainGUI)
    ; ----------------------------------------------------------------------------

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

    ; ----------------------------------------
    ; INI-CreatorGUI
    ; ----------------------------------------
    ; Fenster erzeugen und Close-Ereignis behandeln
    $INIGUI = GuiCreate("INI-Creator", 276, 200)
    GUISetOnEvent($GUI_EVENT_CLOSE, "_ini_close")

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

    $Programmname_label = GUICtrlCreateLabel("Programm-Name:", 20, 23)
    $Programmname_input = GUICtrlCreateInput("", 110, 20, 150)
    $Kategorie_label = GUICtrlCreateLabel("Kategorie:", 20, 63)
    $Kategorie_input = GUICtrlCreateCombo ("Anwendungen", 110, 60, 150)
    GUICtrlSetData(-1,"System Essentials|Sicherheit|Sonstiges", "Anwendungen")
    $Benutzer_label = GUICtrlCreateLabel("Autor:", 20, 103)
    $Benutzer_input = GUICtrlCreateInput("", 110, 100, 150)

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

    $save = GUICtrlCreateButton("Speichern", 20, 140, 100, 30)
    GUICtrlSetOnEvent($save, "_ini_save")
    $abbrechen = GUICtrlCreateButton("Abbrechen", 133, 140, 100, 30)
    GUICtrlSetOnEvent($abbrechen, "_ini_abbrechen")

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

    ; Fenster anzeigen
    GUISetState(@SW_HIDE, $INIGUI)
    ; ----------------------------------------------------------------------------

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

    ; ----------------------------------------
    ; Programm-ListeGUI
    ; ----------------------------------------
    ; Fenster erzeugen und Close-Ereignis behandeln
    $ProgrammlisteGUI = GuiCreate("Welche Programme wurden bereits integriert?", 400, 383)
    GUISetOnEvent($GUI_EVENT_CLOSE, "_programmliste_close")

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

    $Programmliste_programm_liste = GUICtrlCreateList("", 20, 20, 360, 300)
    _programmliste_scan_programs()

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

    $Programmliste_aktualisieren = GUICtrlCreateButton("Ak&tualisieren", 25, 333, 150, 30)
    GUICtrlSetOnEvent($Programmliste_aktualisieren, "_programmliste_scan_programs")

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

    $Programmliste_close = GUICtrlCreateButton("Schließen", 225, 333, 150, 30)
    GUICtrlSetOnEvent($Programmliste_close, "_programmliste_close")

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

    ; Fenster anzeigen
    GUISetState(@SW_HIDE, $ProgrammlisteGUI)
    ; ============================================================================

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

    ; ============================================================================
    ; ----------------------------------------
    ; Funktionen
    ; ----------------------------------------
    ; ----------------------------------------------------------------------------

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

    ; ----------------------------------------
    ; Main-Funktionen
    ; ----------------------------------------
    Func _download()

    _disablen()

    ; Name des Programms
    $Name_Open = InputBox("Programm-Name", "Bitte geben Sie den Namen des zu integrierenden Programms ein.")
    ; Prüfe ob Programmname-Datei existiert, wenn ja lösche Datei und erstelle neu, wenn nein, erstelle neu
    If FileExists($File) Then
    FileDelete($File)
    FileWrite($File, $Name_Open)
    Else
    FileWrite($File, $Name_Open)
    EndIf
    ; Lese Programmname
    $Programmname = FileReadLine($File, 1)
    If MsgBox(4, $Programmname & "-Skript downloaden?", "Möchten Sie das Skript für " & $Programmname & " vom FTP-Server herunterladen?") = 6 Then
    _FTP()
    EndIf

    ; Wenn Skript im FTP nicht existiert, wird der Autor informiert
    ; Lese Programmname
    $Programmname = FileReadLine($File, 1)
    ; Prüfe ob Programmname existiert
    If FileExists($Programmname) Then
    ; Hier kommt der Quelltext für den Download rein
    Else
    ; Skript wurde nicht gefunden
    If MsgBox(64, $Programmname & "-Skript nicht gefunden", "Das Skript für das Programm " & $Programmname & " wurde nicht gefunden." & @CRLF & "Der Autor wurde über das fehlende Skript informiert. Er schickt Ihnen eine E-Mail wenn das Skript verfügbar ist.") Then
    ; Autor wird informiert
    ;~ _INetMail($Mail_To, $Programmname & "-Skript wurde nicht gefunden", "Hallo Herr Kübler," & @CRLF & "Das Skript für das Programm " & $Programmname & " wurde nicht gefunden. Könnten Sie es bitte auf den FTP-Server packen.")
    EndIf
    EndIf

    ; Hier kommt der Quelltext für den Download rein

    If FileExists(@TempDir & "*.au3") Then
    ; Lese Programmname
    $Programmname = FileReadLine($File, 1)
    $var = FileSelectFolder("Wo möchten Sie das Skript für " & $Programmname & " speichern.", "", 1 2)
    FileCopy(@TempDir & "*.au3", $var)
    If MsgBox(64, "Info", "Programm-Name: " & $Programmname & @CRLF & 'Skript-Ort: "' & $var & '"') Then
    FileDelete($File)
    FileDelete(@TempDir & "*.au3")
    EndIf
    EndIf

    _enablen()

    EndFunc ;==>_download

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

    Func _upload()

    _disablen()

    ; Name des Programms
    $Name_Open = InputBox("Programm-Name", "Bitte geben Sie den Namen des zu uploadenden Programms ein.")
    ; Schreibe Programmename in die IOM-Datei
    If FileExists($File) Then
    FileDelete($File)
    FileWrite($File, $Name_Open)
    Else
    FileWrite($File, $Name_Open)
    EndIf
    ; Lese Programmname
    $Programmname = FileReadLine($File, 1)
    If MsgBox(4, $Programmname & " uploaden", 'Möchten Sie wirklich das Skript für "' & $Programmname & '" auf den FTP-Server hochladen?') = 6 Then
    _FTP()
    If @error Then
    TrayTip("FTP-Verbindung", "Die Verbindung zum FTP-Server konnte nicht hergestellt werden.", 5, 3)
    Else
    ; Lese Programmname
    $Programmname = FileReadLine($File, 1)
    ; Erstelle Verzeichnis
    $FTP_Target = _FTPMakeDir($FTP_Server, $Programmname)
    ; Lese Programmname
    $Programmname = FileReadLine($File, 1)
    ; Lade Skript-Datei hoch
    $Target_Scripts = FileOpenDialog('Bitte wählen Sie das Skript für das Programm "' & $Programmname & '" das upgeloadet werden sollte.', @MyDocumentsDir, "AutoIT Skripte (*.au3)", 1 2 )
    TrayTip("Upload", "Lade Skript hoch", 2000, 1)
    _FTPPutFile($FTP_Server, $Target_Scripts, $Programmname & "" & $Programmname & ".au3")
    ; INI-Datei hochladen
    $Target_INI = FileOpenDialog('Bitte wählen Sie die Konfigurations-Datei für das Skript "' & $Target_Scripts & '"', @MyDocumentsDir, "Konfigurations-Dateien für IOM-Skripte (*.ini)", 1 2 )
    If @error Then
    If MsgBox(16, "Keine INI-Datei ausgewählt", "Bitte wählen Sie eine INI-Datei aus. Ohne INI-Datei kann das Skript nicht hochgeladen werden.") Then _ini()
    Else
    ; Lese Programmname
    $Programmname = FileReadLine($File, 1)
    TrayTip("Upload", "Lade Konfigurations-Datei hoch", 2000, 1)
    _FTPPutFile($FTP_Server, $Target_INI, $Programmname & ".ini")
    EndIf
    ; FTP-Verbindung schließen
    _FTPClose($FTP_Open)
    EndIf
    EndIf

    _enablen()

    EndFunc ;==>_upload

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

    Func _info()

    _disablen()

    MsgBox(320, "Info", "Diese Schaltfläche hat keine Funktion.")

    _enablen()

    EndFunc ;==>_info

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

    Func _close()

    Exit

    EndFunc ;==>_close
    ; ----------------------------------------------------------------------------

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

    ; ----------------------------------------
    ; INICreator-Funktionen
    ; ----------------------------------------
    Func _ini()

    GUISetState(@SW_SHOW, $INIGUI)
    GUISetState(@SW_HIDE, $mainGUI)

    EndFunc ;==>_ini

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

    Func _ini_close()

    GUISetState(@SW_SHOW, $mainGUI)
    GUISetState(@SW_HIDE, $INIGUI)

    EndFunc ;==>_ini_close

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

    Func _ini_save()

    $Target_Config = FileSaveDialog("Erstellung von Konfigurations-Dateien für IOM-Skripte.", @MyDocumentsDir, "Konfigurations-Dateien für IOM-Skripte (*.ini)", 2, GUICtrlRead($Programmname_input))

    IniWrite($Target_Config & ".ini", GUICtrlRead($Programmname_input), "Programm-Name", GUICtrlRead($Programmname_input))
    IniWrite($Target_Config & ".ini", GUICtrlRead($Programmname_input), "Kategorie", GUICtrlRead($Kategorie_input))
    IniWrite($Target_Config & ".ini", GUICtrlRead($Programmname_input), "Autor", GUICtrlRead($Benutzer_input))
    If MsgBox(320, "Erstellung abgeschlossen", "Die Erstellung der Konfigurations-Datei wurde abgeschlossen. Sie können nun die Konfigurations-Datei uploaden.") Then
    _ini_close()
    EndIf

    EndFunc ;==>_ini_save

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

    Func _ini_abbrechen()

    If MsgBox(4, "Keine INI-Datei", "Sie haben keine Konfigurations-Datei für Ihr IOM-Skript erstellt." & @CRLF & "Bitte erstellen Sie eine Konfigurations-Datei." & @CRLF & "Möchten Sie die Konfigurations-Datei für Ihr IOM-Skript nun erstellen.") = 6 Then
    GUISetState(@SW_SHOW, $INIGUI)
    Else
    _ini_close()
    EndIf

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

    EndFunc ;==>_ini_abbrechen
    ; ----------------------------------------------------------------------------

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

    ; ----------------------------------------
    ; Programmliste-Funktionen
    ; ----------------------------------------
    Func _programmliste_open()

    GUISetState(@SW_SHOW, $ProgrammlisteGUI)
    GUISetState(@SW_HIDE, $mainGUI)

    EndFunc ;==>_programmliste_open

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

    Func _programmliste_close()

    GUISetState(@SW_SHOW, $mainGUI)
    GUISetState(@SW_HIDE, $ProgrammlisteGUI)

    EndFunc ;==>_programmliste_close

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

    ; Funktion von Install-O-Matic Manager 2.00 übernommen (Autor: peethebee)
    Func _programmliste_scan_programs()
    $items = ""

    ; Suche nach allen Dateien und Verzeichnissen
    $search = FileFindFirstFile($Target_IOM & "*")

    ; Überprüfen, ob die Suche erfolgreich war
    If $search = -1 Then
    MsgBox(0, "Fehler", "Es wurde keine Programme mehr in der Install-O-Matic gefunden...")
    EndIf

    While 1
    $result = FileFindNextFile($search)
    If @error Then ExitLoop

    If FileExists($Target_IOM & $result & "install_iom_anwendungen.au3") Or FileExists($Target_IOM & $result & "install_iom_essentials.au3") Or FileExists($Target_IOM & $result & "install_iom_sicherheit.au3") Or FileExists($Target_IOM & $result & "install_iom_sonstiges.au3") Then
    $items &= $result & "|"
    EndIf
    WEnd

    ; Suchhandle schließen
    FileClose($search)

    $items = StringTrimRight($items, 1)
    GUICtrlSetData($Programmliste_programm_liste, "") ; Liste leeren...
    GUICtrlSetData($Programmliste_programm_liste, $items) ; ...und neu befüllen
    EndFunc ;==>_programmliste_scan_programs
    ; ----------------------------------------------------------------------------

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

    ; ----------------------------------------
    ; FTP-Funktionen
    ; ----------------------------------------
    Func _FTP()

    ; Baue FTP-Verbindung auf
    $FTP_Open = _FTPOpen("Skript-Loader für IOM", 1, '', '', 0)
    ; Baue Verbdindung zum Server auf
    $Server = ""
    $User = ""
    $Pass = ""
    $SubDir = "" ; $SubDir hat hier keine Verwendung
    $Port = "21"
    $FTP_Server = _FTPConnect ($FTP_Open, $Server, $User, $Pass, $Port)

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

    EndFunc ;==>_FTP
    ; ----------------------------------------------------------------------------

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

    ; ----------------------------------------
    ; Credits-Funktionen
    ; ----------------------------------------
    Func _credits()

    _disablen()

    GUISetState(@SW_HIDE, $mainGUI)
    _credits_open()

    EndFunc ;==>_credits

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

    ; Credits-Funktion von Galenda übernommen (Autor: peethebee)
    Func _credits_open()

    Local $about[20], $times[1]
    $about[0] = "=== Idee ==="
    $about[1] = "Manuel Kübler"
    $about[2] = ""
    $about[3] = "=== Programmierer ==="
    $about[4] = "Manuel Kübler, BlackJack, huggy,"
    $about[5] = "peethebee"
    $about[6] = ""
    $about[7] = "Feedback und Anregungen sind"
    $about[8] = " immer willkommen! "
    $about[9] = "mk-software@gmx.de"
    $about[10] = ""
    $about[11] = "=== Programmiersprache ==="
    $about[12] = "AutoIt 3 (https://autoit.de/www.autoitscript.com)"
    $about[13] = ""
    $about[14] = "=== Danke an ==="
    $about[15] = "Danke an huggy für die Bereitstellung einer"
    $about[16] = "Online-Datenbank für den Skript-Loader."
    $about[17] = "Danke an peethebee für die"
    $about[18] = "Credits-Funktion und die"
    $about[19] = "Programmliste-Funktion."

    $times[0] = 2500

    HotKeySet("{ESC}", "_credits_close")

    _txt_eff__about_messages($mainGUI, $gui_dmy_1, $about, 15, $times, 1, "modern")
    EndFunc ;==>_credits_open

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

    ;===============================================================================
    ;
    ; Description: Shows a about box with many different effects.
    ; Syntax: _txt_eff__about_messages($winhandle, $control_id, $texts, [$delay, [$showtime, [$pause, [$type]]]])
    ; Parameter(s): $winhandle - Handle of the target window, $control_id - ID of the target control, $texts - Array containing all messages to show, $delay - Animation speed (1 = fast, 1000 = slow), $showtime - time the single message is shown (also possible: array with values correspondenting to $texts), $pause - time to wait until the next message is displayed, $type - type of the animation: "raining, "right_to_left", "left_to_right", "right_to_right", "left_to_left", "enlarge_from_left", "enlarge_from_right", "zoom_big_to_small", "zoom_small_to_big", "move_cap_char", "move_small_char", "wall_to_wall", "blink", "wave", "mix_up", "spotlight", "fade", "rainbow", "modern"
    ; Requirement(s): v3.1.1.66 (beta) or later
    ; Author(s): peethebee <[email='peethebee@gmx.de'][/email]>
    ; Note(s): None
    ;
    ;===============================================================================
    Func _txt_eff__about_messages($winhandle, $control_id, $texts, $delay = 50, $showtime = 2000, $pause = 750, $type = "right_to_left")
    If $type = "modern" Then

    ; ------- parameters -------
    Local $_lbl_height = 20 ; height of a single line (label)
    Local $_no_color = 0xECE9D8
    Local $_black = 0x000000
    Local $_messages = 5
    Global $_labels[$_messages]

    ; enlarge Arrray
    For $k = 1 To $_messages
    _ArrayInsert($texts, 0, "")
    _ArrayInsert($texts, UBound($texts), "")
    Next

    Global $_txt_eff_about_gui = GUICreate("Credits", 250, $_lbl_height 20 $_lbl_height * $_messages 80, -1, -1, 0, 0) ; the about win's title, width and height here
    Global $_txt_eff_gui_close_lbl = GUICtrlCreateLabel("[ESC zum Abbrechen]", 10, $_lbl_height 20 $_lbl_height * $_messages 25, 230, 20, $SS_CENTER)
    GUICtrlSetColor(-1, 0xFF00000)
    GUICtrlSetFont(-1, 10)

    For $k = 1 To $_messages
    $_style = $SS_CENTER ; styles are located here!
    $_labels[$k - 1] = GUICtrlCreateLabel("[Error]", 10, 50 25 * $k, 210, $_lbl_height, $_style)
    Next

    GUISetState(@SW_SHOW)

    For $k = 0 To UBound($texts) - $_messages

    GUICtrlSetColor($_labels[$_messages - 1], 0xECE9D8)
    For $p = 0 To $_messages - 1
    GUICtrlSetPos($_labels[$p], 19, $_lbl_height 20 $_lbl_height * $p, 210, $_lbl_height)
    GUICtrlSetData($_labels[$p], $texts[$k $p])
    Next

    For $c = 0 To - $_lbl_height Step - 1 ; control's height is here again
    If WinExists("Credits") Then
    Sleep($delay)

    ; move
    For $z = 0 To $_messages - 1
    GUICtrlSetPos($_labels[$z], 19, $_lbl_height 20 $_lbl_height * $z $c, 210, $_lbl_height)
    Next

    ; fade
    $red_diff = _ColorGetRed($_black) - _ColorGetRed($_no_color)
    $green_diff = _ColorGetGreen($_black) - _ColorGetGreen($_no_color)
    $blue_diff = _ColorGetBlue($_black) - _ColorGetBlue($_no_color)
    $red_res = Hex(_ColorGetRed($_black) Round($red_diff / $_lbl_height * ($c $_lbl_height 1)), 2)
    $green_res = Hex(_ColorGetGreen($_black) Round($green_diff / $_lbl_height * ($c $_lbl_height 1)), 2)
    $blue_res = Hex(_ColorGetBlue($_black) Round($blue_diff / $_lbl_height * ($c $_lbl_height 1)), 2)
    GUICtrlSetColor($_labels[0], "0x" & $red_res & $green_res & $blue_res)

    $red_diff = _ColorGetRed($_no_color) - _ColorGetRed($_black)
    $green_diff = _ColorGetGreen($_no_color) - _ColorGetGreen($_black)
    $blue_diff = _ColorGetBlue($_no_color) - _ColorGetBlue($_black)
    $red_res = Hex(_ColorGetRed($_black) Round($red_diff / $_lbl_height * ($c $_lbl_height 1)), 2)
    $green_res = Hex(_ColorGetGreen($_black) Round($green_diff / $_lbl_height * ($c $_lbl_height 1)), 2)
    $blue_res = Hex(_ColorGetBlue($_black) Round($blue_diff / $_lbl_height * ($c $_lbl_height 1)), 2)
    GUICtrlSetColor($_labels[$_messages - 1], "0x" & $red_res & $green_res & $blue_res)
    Else
    Return
    EndIf
    Next
    Next
    ;~ GUIDelete($_txt_eff_about_gui)
    _credits_close()
    EndIf
    EndFunc ;==>_txt_eff__about_messages

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

    Func _credits_close()

    GUIDelete($_txt_eff_about_gui)
    HotKeySet("{ESC}")
    GUISetState(@SW_SHOW, $mainGUI)

    _enablen()

    EndFunc ;==>__credits_close

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

    ; ----------------------------------------------------------------------------

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

    ; ----------------------------------------
    ; Disable & Enable-Funktionen
    ; ----------------------------------------
    Func _disablen()

    GUISetState($download, $GUI_DISABLE)
    GUISetState($upload, $GUI_DISABLE)

    EndFunc ;==>_disablen

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

    Func _enablen()

    GUICtrlSetState($download, $GUI_ENABLE)
    GUICtrlSetState($upload, $GUI_ENABLE)

    EndFunc ;==>_enablen
    ; ============================================================================

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

    While 1
    sleep(500)
    WEnd

    [/autoit]
  • Danke. Ich hab es noch ein bisschen verbessert und BlackJack musste seine blöden Bugs entfernen. Jetzt muss nur noch huggy die Datenbank zu Ende bauen

    Spoiler anzeigen
    [autoit]


    #cs ----------------------------------------------------------------------------

    AutoIt-Version: v3.2.0.1

    Programmname: Skript-Loader für IOM
    Version: ...

    Idee Manuel Kübler
    Programmierer: Manuel Kübler (GUIs, Funktionen, Mail, Download)
    BlackJack (FTP, Info, Credits, INI-Creator, Upload)
    huggy (Online-Datenbank)
    peethebee (Info, Credits, Programm-Liste)

    Mail: [email='mk-software@gmx.de'][/email]
    Copyrigtht: © Manuel Kübler 2006

    Skript Function:
    ...

    Danke an BlackJack, huggy, peethebee!

    ----------------------------------------------------------------------------


    Todo:

    - Online-Datenbank
    -> Info-Box
    -> OD an den FTP-Server anpassen
    -> URL zum Skript-Loader hinzuügen
    - huggy

    - INI-Dateien
    -> Jedes Programm erhält eine individuelle INI-Datei
    - Offen


    Done:

    - BUG im INI-Creator
    -> BUG entfernen
    - BlackJack (Done.)

    - Info-Funktion
    -> Info-Funktion von Galenda übernehmen
    -> Anpassen an den Skript-Loader
    - BlackJack (Done.)

    - Integration des IOM-Skriptes
    -> Fragen nach dem Download, ob man das Skript gleich integrieren will
    -> Install-O-Matic Manager 2.00 wird gestartet
    - Manuel Kübler (Done.)

    - FTP-Funktion
    -> Skripte auf FTP hochladen (Done. by BlakJack)
    -> Skripte von FTP in Temp-Ordner herunterladen (Done. by Manuel Kübler)
    - BlackJack & Manuel Kübler

    - INI-Creator & Funktionen
    -> Integrieren des Plug-Ins INI-Creator
    -> Menü-Eintrag erstellen
    -> Ohne INI-Datei kein Upload
    -> Programm-Name, Autor, Kategorie, ...(Done. by Manuel Kübler)
    - BlackJack (Done.)

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

    - Credits
    -> Credits-Funktion von Galenda übernommen
    -> Angepasst an den Skript-Loader
    - BlackJack (Done.)

    - Mail-Funktion
    -> Wenn Skript nicht existiert, wird der Autor informiert.
    -> Autor informiert Benutzer wenn Skript verfügbar ist.
    - Manuel Kübler (Done.)

    - Programm-Liste
    -> Liste über alle integrierten Programme
    - Manuel Kübler (Done.)

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

    #ce ----------------------------------------------------------------------------

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

    ; ============================================================================
    ; ----------------------------------------
    ; AutoIT Options
    ; ----------------------------------------
    Opt("GUIOnEventMode", 1)

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

    ; ----------------------------------------
    ; Includes
    ; ----------------------------------------
    #Include <Array.au3>
    #include <Color.au3>
    #include <FTP.au3>
    #include <GUIConstants.au3>
    #include <INet.au3>

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

    ; ----------------------------------------
    ; Variablen-Deklarationen
    ; ----------------------------------------
    Global $File = @TempDir & "\Programme.iom"
    Global $gui_dmy_1 = GUICtrlCreateDummy() ; Dummy (v.a. für AboutBox)
    Global $Target_IOM = RegRead("HKLM\SOFTWARE\PC Magazin\Install-O-Matic", "HDD Path")
    Global $PROGRAM_NAME = "Install-O-Matic Skript-Loader"
    Global $PROGRAM_VERSION = "1.00"
    ; ----------------------------------------
    ; Mail
    ; ----------------------------------------
    Global $Mail_To = "mk-software@gmx.de"

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

    If @OSVersion <> "WIN_XP" Then
    If MsgBox(16, "Nicht unterstützte Windows-Version", "Der Skript-Loader für die Install-O-Matic wurde für Microsoft Windows XP entwickelt und getestet. Deshalb wird nicht empfohlen, es unter diesem Betriebssystem (" & @OSVersion & ") zu starten.") <> 6 Then Exit
    EndIf

    If Not FileExists($Target_IOM) Then
    If MsgBox(16, "IOM konnte nicht gefunden werden", "Bitte kopieren Sie Install-O-Matic mit der Hilfe des Install-O-Matic Manager 2.00 von der PC Magazin 05/2006 DVD auf Ihre Festplatte.") <> 6 Then Exit
    EndIf
    ; ============================================================================

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

    ; ============================================================================
    ; ----------------------------------------
    ; GUIs
    ; ----------------------------------------
    ; ----------------------------------------------------------------------------

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

    ; ----------------------------------------
    ; MainGUI
    ; ----------------------------------------
    ; Fenster erzeugen und Close-Ereignis behandeln
    $mainGUI = GuiCreate($PROGRAM_NAME, 276, 113)
    GUISetOnEvent($GUI_EVENT_CLOSE, "_file_close")
    ;
    ; Menü
    ; Datei
    $gui_mnu_file = GUICtrlCreateMenu("&Datei")
    ; INI-Datei erstellen
    $gui_mnu_file_close = GUICtrlCreateMenuitem("INI-Datei erstellen", $gui_mnu_file)
    GUICtrlSetOnEvent(-1, "_file_ini")
    ;
    $gui_mnu_file_close = GUICtrlCreateMenuitem("", $gui_mnu_file)
    ; Beenden
    $gui_mnu_file_close = GUICtrlCreateMenuitem("Beenden", $gui_mnu_file)
    GUICtrlSetOnEvent(-1, "_file_close")
    ; Online-Datenbank
    $gui_mnu_online = GUICtrlCreateMenu("&Online-Datenbank")
    ; Welche Skripte wurden bereits ins Internet gestellt?
    $gui_mnu_online_skriptliste = GUICtrlCreateMenuitem("Welche Skripte wurden bereits ins Internet gestellt?", $gui_mnu_online)
    GUICtrlSetOnEvent(-1, "_online_skriptliste_open")
    ; Info
    $gui_mnu_online_info = GUICtrlCreateMenuitem("Info", $gui_mnu_online)
    ; Hilfe
    $gui_mnu_help = GUICtrlCreateMenu("&Hilfe")
    ; Welche Programme wurden bereits integriert?
    $gui_mnu_help_programmliste = GUICtrlCreateMenuitem("Welche Programme wurden bereits integriert?", $gui_mnu_help)
    GUICtrlSetOnEvent(-1, "_help_programmliste_open")
    ;
    $gui_mnu_help_programmliste = GUICtrlCreateMenuitem("", $gui_mnu_help)
    ; Credits
    $gui_mnu_help_credits = GUICtrlCreateMenuitem("Credits", $gui_mnu_help)
    GUICtrlSetOnEvent(-1, "_help_credits")
    ; Info
    $gui_mnu_help_info = GUICtrlCreateMenuitem("Info", $gui_mnu_help)
    GUICtrlSetOnEvent(-1, "_help_info")
    ;
    ; BUTTONS erzeugen und Klick-Ereignisse den Funktionen zuordnen
    $download = GUICtrlCreateButton("Skripte downloaden", 10, 20, 120, 30)
    GUICtrlSetOnEvent($download, "_download")
    $upload = GUICtrlCreateButton("Skripte uploaden", 143, 20, 120, 30)
    GUICtrlSetOnEvent($upload, "_upload")

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

    ; Fenster anzeigen
    GUISetState(@SW_SHOW, $mainGUI)
    ; ----------------------------------------------------------------------------

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

    ; ----------------------------------------
    ; INI-CreatorGUI
    ; ----------------------------------------
    ; Fenster erzeugen und Close-Ereignis behandeln
    $INIGUI = GuiCreate("INI-Creator", 276, 200)
    GUISetOnEvent($GUI_EVENT_CLOSE, "_file_ini_close")

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

    $Programmname_label = GUICtrlCreateLabel("Programm-Name:", 20, 23)
    $Programmname_input = GUICtrlCreateInput("", 110, 20, 150)
    $Kategorie_label = GUICtrlCreateLabel("Kategorie:", 20, 63)
    $Kategorie_input = GUICtrlCreateCombo ("Anwendungen", 110, 60, 150)
    GUICtrlSetData(-1,"System Essentials|Sicherheit|Sonstiges", "Anwendungen")
    $Benutzer_label = GUICtrlCreateLabel("Autor:", 20, 103)
    $Benutzer_input = GUICtrlCreateInput("", 110, 100, 150)

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

    $save = GUICtrlCreateButton("Speichern", 20, 140, 100, 30)
    GUICtrlSetOnEvent($save, "_file_ini_save")
    $abbrechen = GUICtrlCreateButton("Abbrechen", 133, 140, 100, 30)
    GUICtrlSetOnEvent($abbrechen, "_file_ini_abbrechen")

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

    ; Fenster verstecken
    GUISetState(@SW_HIDE, $INIGUI)
    ; ----------------------------------------------------------------------------

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

    ; ----------------------------------------
    ; Programm-ListeGUI
    ; ----------------------------------------
    ; Fenster erzeugen und Close-Ereignis behandeln
    $ProgrammlisteGUI = GuiCreate("Welche Programme wurden bereits integriert?", 400, 383)
    GUISetOnEvent($GUI_EVENT_CLOSE, "_help_programmliste_close")

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

    $Programmliste_programm_liste = GUICtrlCreateList("", 20, 20, 360, 300)
    _help_programmliste_scan_programs()

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

    $Programmliste_aktualisieren = GUICtrlCreateButton("Ak&tualisieren", 25, 333, 150, 30)
    GUICtrlSetOnEvent($Programmliste_aktualisieren, "_help_programmliste_scan_programs")

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

    $Programmliste_close = GUICtrlCreateButton("Schließen", 225, 333, 150, 30)
    GUICtrlSetOnEvent($Programmliste_close, "_help_programmliste_close")

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

    ; Fenster verstecken
    GUISetState(@SW_HIDE, $ProgrammlisteGUI)
    ; ============================================================================

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

    ; ============================================================================
    ; ----------------------------------------
    ; Funktionen
    ; ----------------------------------------
    ; ----------------------------------------------------------------------------

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

    ; ----------------------------------------
    ; Main-Funktionen
    ; ----------------------------------------
    Func _download()

    _disablen() ; Deaktiviere Buttons

    ; Name des Programms
    $Name_Open = InputBox("Programm-Name", "Bitte geben Sie den Namen des zu integrierenden Programms ein.")
    ; Prüfe ob Temp-Datei existiert, wenn ja lösche Datei und erstelle neu, wenn nein, erstelle neu
    If FileExists($File) Then
    FileDelete($File)
    FileWrite($File, $Name_Open)
    Else
    FileWrite($File, $Name_Open)
    EndIf
    ; Lese Programmname
    $Programmname = FileReadLine($File, 1)
    If MsgBox(4, $Programmname & "-Skript downloaden?", "Möchten Sie das Skript für " & $Programmname & " vom FTP-Server herunterladen?") = 6 Then
    _FTP()
    If @error Then
    TrayTip("FTP-Verbindung", "Die Verbindung zum FTP-Server konnte nicht hergestellt werden.", 2000, 3)
    ; Lösche Temp-Datei
    FileDelete($File)
    ; MainGUI anzeigen
    GUISetState(@SW_SHOW, $mainGUI)
    ; Buttons aktivieren
    _enablen()
    Else
    TrayTip("FTP-Verbindung", "Die Verbindung zum FTP-Server wurde hergestellt.", 2000, 1)
    ; Lese Programmname
    $Programmname = FileReadLine($File, 1)
    TrayTip("Download", "Das Skript wird heruntergeladen.", 2000, 1)
    ; Lade Skript herunter
    InetGet("ftp://ftp.yourdomain.de/" & $Programmname & "/" & $Programmname & ".au3", @TempDir & "\" & $Programmname & ".au3", 1, 0)
    ; Lade Konfigurations-Datei für das IOM-Skript herunter
    InetGet("ftp://ftp.yourdomain.de/" & $Programmname & ".ini", @TempDir & "\" & $Programmname & ".ini", 1, 0)
    If @error Then
    TrayTip("Download", "Das Skript wurde nicht heruntergeladen.", 2000, 3)
    ; Lösche Temp-Datei
    FileDelete($File)
    ; MainGUI anzeigen
    GUISetState(@SW_SHOW, $mainGUI)
    ; Buttons aktivieren
    _enablen()
    Else
    ; Lese Programmname
    $Programmname = FileReadLine($File, 1)
    ; Prüfe ob Skript heruntergeladen wurde
    If FileExists(@TempDir & "\" & $Programmname & ".au3") Then
    TrayTip("Download", "Das Skript wurde heruntergeladen.", 2000, 1)
    ; Lese Programmname
    $Programmname = FileReadLine($File, 1)
    $var = FileSelectFolder("Wo möchten Sie das Skript für " & $Programmname & " speichern.", "", 1 + 2)
    If @error Then
    TrayTip("Speichern", "Das Skript konnte nicht gespeichert werden.", 2000, 3)
    Else
    ; Lese Programmname
    $Programmname = FileReadLine($File, 1)
    ; Kopiere Skript nach $var
    FileCopy(@TempDir & "\" & $Programmname & ".au3", $var)
    ; Kopiere Konfigurations-Datei nach $var
    FileCopy(@TempDir & "\" & $Programmname & ".ini", $var)
    ; Lese Programmname
    $Programmname = FileReadLine($File, 1)
    ; Info über das heruntergeladene Skript
    If MsgBox(64, "Info", "Programm-Name: " & $Programmname & @CRLF & 'Skript-Ort: "' & $var & '"') Then
    ; Lösche Skript im Temp-Verzeichnis
    FileDelete(@TempDir & "\*.au3")
    ; Lösche Konfigurations-Datei im Temp-Verzeichnis
    FileDelete(@TempDir & "\*.ini")
    EndIf
    ; Starte Integrate-Funktion
    _integrate()
    EndIf
    Else
    ; Lese Programmname
    $Programmname = FileReadLine($File, 1)
    If MsgBox(64, $Programmname & "-Skript nicht gefunden", "Das Skript für das Programm " & $Programmname & " wurde nicht gefunden." & @CRLF & "Der Autor wird über das fehlende Skript informiert. Er schickt Ihnen eine E-Mail wenn das Skript verfügbar ist.") Then
    ; Schreibe E-Mail an Autor
    _INetMail($Mail_To, $Programmname & "-Skript wurde nicht gefunden", "Hallo Herr Kübler," & @CRLF & "Das Skript für das Programm " & $Programmname & " wurde nicht gefunden. Könnten Sie es bitte auf den FTP-Server packen und mich danach informieren.")
    ; Lösche Temp-Datei
    FileDelete($File)
    EndIf
    EndIf
    EndIf
    EndIf
    EndIf

    _enablen()

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

    EndFunc ;==>_download

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

    Func _upload()

    _disablen() ; Deaktiviere Buttons

    ; Name des Programms
    $Name_Open = InputBox("Programm-Name", "Bitte geben Sie den Namen des zu uploadenden Programms ein.")
    If @error Then
    ; Hier kommt der Quelltext rein
    Else
    ; Schreibe Programmename in die Temp-Datei
    If FileExists($File) Then
    FileDelete($File)
    FileWrite($File, $Name_Open)
    Else
    FileWrite($File, $Name_Open)
    EndIf
    ; Lese Programmname
    $Programmname = FileReadLine($File, 1)
    If MsgBox(4, $Programmname & " uploaden", 'Möchten Sie wirklich das Skript für "' & $Programmname & '" auf den FTP-Server hochladen?') = 6 Then
    _FTP()
    If @error Then
    TrayTip("FTP-Verbindung", "Die Verbindung zum FTP-Server konnte nicht hergestellt werden.", 2000, 3)
    Else
    ; Lese Programmname
    $Programmname = FileReadLine($File, 1)
    ; Erstelle Verzeichnis
    $FTP_Target = _FTPMakeDir($FTP_Server, $Programmname)
    ; Lese Programmname
    $Programmname = FileReadLine($File, 1)
    ; INI-Datei hochladen
    $Target_INI = FileOpenDialog('Bitte wählen Sie die Konfigurations-Datei für das Skript "' & $Target_Scripts & '"', @MyDocumentsDir, "Konfigurations-Dateien für IOM-Skripte (*.ini)", 1 + 2 )
    If @error Then
    If MsgBox(16, "Keine INI-Datei ausgewählt", "Bitte wählen Sie eine INI-Datei aus. Ohne INI-Datei kann das Skript nicht hochgeladen werden.") Then _ini()
    Else
    ; Starte INI-Upload-Funktion
    _file_ini_upload()
    EndIf
    ; Lade Skript-Datei hoch
    $Target_Scripts = FileOpenDialog('Bitte wählen Sie das Skript für das Programm "' & $Programmname & '" das upgeloadet werden sollte.', @MyDocumentsDir, "AutoIT Skripte (*.au3)", 1 + 2 )
    If @error Then
    TrayTip("Upload", "Kein Skript ausgewählt.", 2000, 3)
    GUISetState(@SW_HIDE, $mainGUI)
    _enablen()
    Else
    TrayTip("Upload", "Lade Skript hoch", 2000, 1)
    _FTPPutFile($FTP_Server, $Target_Scripts, $Programmname & "\" & $Programmname & ".au3")
    TrayTip("Upload", "Das Skript wurde hochgeladen.", 2000, 1)
    ; FTP-Verbindung schließen
    _FTPClose($FTP_Open)
    TrayTip("FTP-Verbindung", "Die FTP-Verbdindung wurde geschlossen.", 2000, 1)
    EndIf
    EndIf
    EndIf
    EndIf

    _enablen()

    EndFunc ;==>_upload

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

    Func _help_info()

    ; Deaktiviere Buttons
    _disablen() ; Deaktiviere Buttons
    ; Verstecke MainGUI
    GUISetState(@SW_HIDE, $mainGUI)

    MsgBox(640, "Informationen", "Sie nutzen " & @CRLF & @CRLF & $PROGRAM_NAME & @CRLF & $PROGRAM_VERSION & @CRLF & @CRLF & "Dieses Programm ist Freeware. Es darf verbreitet und kopiert werden, solange damit in keiner Art Gewinn erzielt wird (z.B. erhöhter Verkauf von Zeitschriften). Dafür ist eine Genehmigung bei [email='mk-software@gmx.de'][/email] einzuholen!" & @CRLF & @CRLF & "Vielen Dank, dass Sie " & $PROGRAM_NAME & " nutzen!" & @CRLF & @CRLF & "Die Autoren")

    ; Zeige MainGUI an
    GUISetState(@SW_SHOW, $mainGUI)
    _enablen()

    EndFunc ;==>_help_info

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

    Func _file_close()

    Exit

    EndFunc ;==>_file_close
    ; ----------------------------------------------------------------------------

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

    ; ----------------------------------------
    ; INICreator-Funktionen
    ; ----------------------------------------
    Func _file_ini()

    GUISetState(@SW_SHOW, $INIGUI)
    GUISetState(@SW_HIDE, $mainGUI)

    EndFunc ;==>_file_ini

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

    Func _file_ini_close()

    GUISetState(@SW_SHOW, $mainGUI)
    GUISetState(@SW_HIDE, $INIGUI)

    EndFunc ;==>_file_ini_close

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

    Func _file_ini_save()

    $Target_Config = FileSaveDialog("Erstellung von Konfigurations-Dateien für IOM-Skripte.", @MyDocumentsDir, "Konfigurations-Dateien für IOM-Skripte (*.ini)", 2, GUICtrlRead($Programmname_input))
    If @error Then
    If MsgBox(160, "Erstellung fehlgeschlagen", "Die Erstellung der Konfigurations-Datei ist fehlgeschlagen. Bitte starten Sie das Programm neu.") Then _file_ini_close()
    Else
    IniWrite($Target_Config & ".ini", "Install-O-Matic", "Programm-Name", GUICtrlRead($Programmname_input))
    IniWrite($Target_Config & ".ini", "Install-O-Matic", "Kategorie", GUICtrlRead($Kategorie_input))
    IniWrite($Target_Config & ".ini", "Install-O-Matic", "Autor", GUICtrlRead($Benutzer_input))
    If MsgBox(320, "Erstellung abgeschlossen", "Die Erstellung der Konfigurations-Datei wurde abgeschlossen. Sie können nun die Konfigurations-Datei uploaden.") Then _file_ini_close()
    EndIf

    EndFunc ;==>_file_ini_save

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

    Func _file_ini_abbrechen()

    If MsgBox(4, "Keine INI-Datei", "Sie haben keine Konfigurations-Datei für Ihr IOM-Skript erstellt." & @CRLF & "Bitte erstellen Sie eine Konfigurations-Datei." & @CRLF & "Möchten Sie die Konfigurations-Datei für Ihr IOM-Skript nun erstellen.") = 6 Then
    GUISetState(@SW_SHOW, $INIGUI)
    Else
    _file_ini_close()
    EndIf

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

    EndFunc ;==>_file_ini_abbrechen

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

    Func _file_ini_upload()

    ; Lese Programmname
    $Programmname = FileReadLine($File, 1)
    TrayTip("Upload", "Lade Konfigurations-Datei hoch", 2000, 1)
    _FTPPutFile($FTP_Server, $Target_INI, $Programmname & ".ini")

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

    EndFunc ;==>_file_ini_upload
    ; ----------------------------------------------------------------------------

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

    ; ----------------------------------------
    ; OnlineDatenbank-Funktionen
    ; ----------------------------------------
    Func _online_skriptliste_open()

    Run(@ComSpec & " /c Start http://www.yourdomain.de", "", @SW_HIDE)

    EndFunc ;==>_online_skriptliste_open
    ; ----------------------------------------------------------------------------

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

    ; ----------------------------------------
    ; Programmliste-Funktionen
    ; ----------------------------------------
    Func _help_programmliste_open()

    GUISetState(@SW_SHOW, $ProgrammlisteGUI)
    GUISetState(@SW_HIDE, $mainGUI)

    EndFunc ;==>_help_programmliste_open

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

    Func _help_programmliste_close()

    GUISetState(@SW_SHOW, $mainGUI)
    GUISetState(@SW_HIDE, $ProgrammlisteGUI)

    EndFunc ;==>_help_programmliste_close

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

    ; Funktion von Install-O-Matic Manager 2.00 übernommen (Autor: peethebee)
    Func _help_programmliste_scan_programs()
    $items = ""

    ; Suche nach allen Dateien und Verzeichnissen
    $search = FileFindFirstFile($Target_IOM & "*")

    ; Überprüfen, ob die Suche erfolgreich war
    If $search = -1 Then
    MsgBox(0, "Fehler", "Es wurde keine Programme mehr in der Install-O-Matic gefunden...")
    EndIf

    While 1
    $result = FileFindNextFile($search)
    If @error Then ExitLoop

    If FileExists($Target_IOM & $result & "\install_iom_anwendungen.au3") Or FileExists($Target_IOM & $result & "\install_iom_essentials.au3") Or FileExists($Target_IOM & $result & "\install_iom_sicherheit.au3") Or FileExists($Target_IOM & $result & "\install_iom_sonstiges.au3") Then
    $items &= $result & "|"
    EndIf
    WEnd

    ; Suchhandle schließen
    FileClose($search)

    $items = StringTrimRight($items, 1)
    GUICtrlSetData($Programmliste_programm_liste, "") ; Liste leeren...
    GUICtrlSetData($Programmliste_programm_liste, $items) ; ...und neu befüllen
    EndFunc ;==>_help_programmliste_scan_programs
    ; ----------------------------------------------------------------------------

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

    ; ----------------------------------------
    ; FTP-Funktionen
    ; ----------------------------------------
    Func _FTP()

    ; Baue FTP-Verbindung auf
    $FTP_Open = _FTPOpen("Skript-Loader für IOM", 1, '', '', 0)
    ; Baue Verbdindung zum Server auf
    $Server = ""
    $User = ""
    $Pass = ""
    $SubDir = "" ; $SubDir hat hier keine Verwendung
    $Port = "21"
    $FTP_Server = _FTPConnect ($FTP_Open, $Server, $User, $Pass, $Port)

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

    EndFunc ;==>_FTP
    ; ----------------------------------------------------------------------------

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

    ; ----------------------------------------
    ; Credits-Funktionen
    ; ----------------------------------------
    Func _help_credits()

    _disablen()

    GUISetState(@SW_HIDE, $mainGUI)
    _help_credits_open()

    EndFunc ;==>_help_credits

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

    ; Credits-Funktion von Galenda übernommen (Autor: peethebee)
    Func _help_credits_open()

    Local $about[20], $times[1]
    $about[0] = "=== Idee ==="
    $about[1] = "Manuel Kübler"
    $about[2] = ""
    $about[3] = "=== Programmierer ==="
    $about[4] = "Manuel Kübler, BlackJack, huggy,"
    $about[5] = "peethebee"
    $about[6] = ""
    $about[7] = "Feedback und Anregungen sind"
    $about[8] = " immer willkommen! "
    $about[9] = "mk-software@gmx.de"
    $about[10] = ""
    $about[11] = "=== Programmiersprache ==="
    $about[12] = "AutoIt 3 (https://autoit.de/www.autoitscript.com)"
    $about[13] = ""
    $about[14] = "=== Danke an ==="
    $about[15] = "Danke an huggy für die Bereitstellung einer"
    $about[16] = "Online-Datenbank für den Skript-Loader."
    $about[17] = "Danke an peethebee für die"
    $about[18] = "Credits-Funktion und die"
    $about[19] = "Programmliste-Funktion."

    $times[0] = 2500

    HotKeySet("{ESC}", "_help_credits_close")

    _txt_eff__about_messages($mainGUI, $gui_dmy_1, $about, 15, $times, 1, "modern")
    EndFunc ;==>_help_credits_open

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

    ;===============================================================================
    ;
    ; Description: Shows a about box with many different effects.
    ; Syntax: _txt_eff__about_messages($winhandle, $control_id, $texts, [$delay, [$showtime, [$pause, [$type]]]])
    ; Parameter(s): $winhandle - Handle of the target window, $control_id - ID of the target control, $texts - Array containing all messages to show, $delay - Animation speed (1 = fast, 1000 = slow), $showtime - time the single message is shown (also possible: array with values correspondenting to $texts), $pause - time to wait until the next message is displayed, $type - type of the animation: "raining, "right_to_left", "left_to_right", "right_to_right", "left_to_left", "enlarge_from_left", "enlarge_from_right", "zoom_big_to_small", "zoom_small_to_big", "move_cap_char", "move_small_char", "wall_to_wall", "blink", "wave", "mix_up", "spotlight", "fade", "rainbow", "modern"
    ; Requirement(s): v3.1.1.66 (beta) or later
    ; Author(s): peethebee <[email='peethebee@gmx.de'][/email]>
    ; Note(s): None
    ;
    ;===============================================================================
    Func _txt_eff__about_messages($winhandle, $control_id, $texts, $delay = 50, $showtime = 2000, $pause = 750, $type = "right_to_left")
    If $type = "modern" Then

    ; ------- parameters -------
    Local $_lbl_height = 20 ; height of a single line (label)
    Local $_no_color = 0xECE9D8
    Local $_black = 0x000000
    Local $_messages = 5
    Global $_labels[$_messages]

    ; enlarge Arrray
    For $k = 1 To $_messages
    _ArrayInsert($texts, 0, "")
    _ArrayInsert($texts, UBound($texts), "")
    Next

    Global $_txt_eff_about_gui = GUICreate("Credits", 250, $_lbl_height + 20 + $_lbl_height * $_messages + 80, -1, -1, 0, 0) ; the about win's title, width and height here
    Global $_txt_eff_gui_close_lbl = GUICtrlCreateLabel("[ESC zum Abbrechen]", 10, $_lbl_height + 20 + $_lbl_height * $_messages + 25, 230, 20, $SS_CENTER)
    GUICtrlSetColor(-1, 0xFF00000)
    GUICtrlSetFont(-1, 10)

    For $k = 1 To $_messages
    $_style = $SS_CENTER ; styles are located here!
    $_labels[$k - 1] = GUICtrlCreateLabel("[Error]", 10, 50 + 25 * $k, 210, $_lbl_height, $_style)
    Next

    GUISetState(@SW_SHOW)

    For $k = 0 To UBound($texts) - $_messages

    GUICtrlSetColor($_labels[$_messages - 1], 0xECE9D8)
    For $p = 0 To $_messages - 1
    GUICtrlSetPos($_labels[$p], 19, $_lbl_height + 20 + $_lbl_height * $p, 210, $_lbl_height)
    GUICtrlSetData($_labels[$p], $texts[$k + $p])
    Next

    For $c = 0 To - $_lbl_height Step - 1 ; control's height is here again
    If WinExists("Credits") Then
    Sleep($delay)

    ; move
    For $z = 0 To $_messages - 1
    GUICtrlSetPos($_labels[$z], 19, $_lbl_height + 20 + $_lbl_height * $z + $c, 210, $_lbl_height)
    Next

    ; fade
    $red_diff = _ColorGetRed($_black) - _ColorGetRed($_no_color)
    $green_diff = _ColorGetGreen($_black) - _ColorGetGreen($_no_color)
    $blue_diff = _ColorGetBlue($_black) - _ColorGetBlue($_no_color)
    $red_res = Hex(_ColorGetRed($_black) + Round($red_diff / $_lbl_height * ($c + $_lbl_height + 1)), 2)
    $green_res = Hex(_ColorGetGreen($_black) + Round($green_diff / $_lbl_height * ($c + $_lbl_height + 1)), 2)
    $blue_res = Hex(_ColorGetBlue($_black) + Round($blue_diff / $_lbl_height * ($c + $_lbl_height + 1)), 2)
    GUICtrlSetColor($_labels[0], "0x" & $red_res & $green_res & $blue_res)

    $red_diff = _ColorGetRed($_no_color) - _ColorGetRed($_black)
    $green_diff = _ColorGetGreen($_no_color) - _ColorGetGreen($_black)
    $blue_diff = _ColorGetBlue($_no_color) - _ColorGetBlue($_black)
    $red_res = Hex(_ColorGetRed($_black) + Round($red_diff / $_lbl_height * ($c + $_lbl_height + 1)), 2)
    $green_res = Hex(_ColorGetGreen($_black) + Round($green_diff / $_lbl_height * ($c + $_lbl_height + 1)), 2)
    $blue_res = Hex(_ColorGetBlue($_black) + Round($blue_diff / $_lbl_height * ($c + $_lbl_height + 1)), 2)
    GUICtrlSetColor($_labels[$_messages - 1], "0x" & $red_res & $green_res & $blue_res)
    Else
    Return
    EndIf
    Next
    Next
    ;~ GUIDelete($_txt_eff_about_gui)
    _help_credits_close()
    EndIf
    EndFunc ;==>_txt_eff__about_messages

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

    Func _help_credits_close()

    GUIDelete($_txt_eff_about_gui)
    HotKeySet("{ESC}")
    GUISetState(@SW_SHOW, $mainGUI)

    _enablen()

    EndFunc ;==>_help_credits_close
    ; ----------------------------------------------------------------------------

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

    ; ----------------------------------------
    ; Integrate-Funktionen
    ; ----------------------------------------
    Func _integrate()

    ; Lese Programmname
    $Programmname = FileReadLine($File, 1)
    ; Info-Box über die Integration
    If MsgBox(4, $Programmname & " integrieren", "Möchten Sie " & $Programmname & " nun in die Install-O-Matic integrieren?") = 6 Then
    ; Starte Install-O-Matic Manager 2.00
    Run($Target_IOM & "install-o-matic_2_manager.exe")
    ; Lösche Temp-Datei
    FileDelete($File)
    Else
    ; Lösche Tem-Datei
    FileDelete($File)
    EndIf

    EndFunc ;==>_integrate
    ; ----------------------------------------------------------------------------

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

    ; ----------------------------------------
    ; Disable & Enable-Funktionen
    ; ----------------------------------------
    Func _disablen()

    GUISetState($download, $GUI_DISABLE)
    GUISetState($upload, $GUI_DISABLE)

    EndFunc ;==>_disablen

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

    Func _enablen()

    GUICtrlSetState($download, $GUI_ENABLE)
    GUICtrlSetState($upload, $GUI_ENABLE)

    EndFunc ;==>_enablen
    ; ============================================================================

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

    While 1
    sleep(500)
    WEnd

    [/autoit]