Komplexes Programm mit externen Dateien und Autoupdater

  • ÄÄÄhhm du kannst nur eine While-Schleife reinmachen.

    Versuch mal das:

    Spoiler anzeigen
    [autoit]

    #Region ;**** Directives created by AutoIt3Wrapper_GUI ****
    #AutoIt3Wrapper_Version=Beta
    #AutoIt3Wrapper_icon=..\..\Downloads\lightning-sign.ico
    #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI ****
    #cs
    Autor: Lukas Krähenbühl (lukiono)
    Programm: Bildumwandler
    Version: 1.1 Alpha 1
    Lizenz: ?
    #ce
    #Include <GDIPlus.au3>
    #Include <Misc.au3>

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

    ;Überprüfung Instanzaktivität
    if _Singleton("Bildumwandler",1) = 0 Then
    Msgbox(16+0+262144,"Warnung","Derzeit ist dieses Programm nicht stabil genug, um mehrere Instanzen aktiv zu halten!"&@CRLF&"Wenn Sie diesen Dialog sehen, besitzen Sie eine Betaversion."&@CRLF&"Mit der kommenden stabilen Version wird die Stabilität sichergestellt sein."&@CRLF&"Danke für Ihr Verständnis")
    Exit
    EndIf

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

    ;Starten der GDI Datenbank
    _GDIPlus_Startup()

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

    ;GUI Beginn
    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <GUIListBox.au3>
    #include <ProgressConstants.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #Region ### START Koda GUI section ### Form=koda_gui.kxf
    $Form1_1 = GUICreate("BMP Umwandler", 625, 443, -1, -1)
    GUISetFont(12, 400, 0, "Arial Narrow")
    GUISetBkColor(0xC8C8C8)
    $bildvorschau = GUICtrlCreatePic("C:\Users\lukiono\Pictures\RCT3\Shot0000.bmp", 8, 8, 281, 209, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS))
    GUICtrlSetCursor (-1, 7)
    $prozessbar = GUICtrlCreateProgress(8, 336, 609, 25)
    GUICtrlSetColor(-1, 0x0000FF)
    $Zielverzeichnis = GUICtrlCreateLabel("Zielverzeichnis", 16, 240, 93, 24)
    GUICtrlSetColor(-1, 0x000000)
    $formatliste = GUICtrlCreateList("", 488, 64, 65, 146)
    GUICtrlSetColor(-1, 0x000000)
    GUICtrlSetCursor (-1, 7)
    $update = GUICtrlCreateButton("Update", 256, 408, 113, 25, $WS_GROUP)
    GUICtrlSetColor(-1, 0x000000)
    $bilderliste = GUICtrlCreateList("", 296, 8, 185, 206)
    GUICtrlSetColor(-1, 0x000000)
    $auswahl_ziel = GUICtrlCreateButton("Auswählen", 472, 240, 105, 25, $WS_GROUP)
    GUICtrlSetColor(-1, 0x000000)
    $zielordner = GUICtrlCreateList("", 120, 240, 345, 26)
    GUICtrlSetColor(-1, 0x000000)
    $Button1 = GUICtrlCreateButton("Umwandeln", 176, 376, 137, 25, $WS_GROUP)
    GUICtrlSetColor(-1, 0x000000)
    $Button2 = GUICtrlCreateButton("Auswählen", 488, 32, 121, 25, $WS_GROUP)
    GUICtrlSetColor(-1, 0x000000)
    $beenden = GUICtrlCreateButton("Beenden", 320, 376, 137, 25, $WS_GROUP)
    GUICtrlSetColor(-1, 0x000000)
    $Label1 = GUICtrlCreateLabel("Bilder", 528, 8, 39, 24)
    GUICtrlSetColor(-1, 0x000000)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###

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

    ;GUI Ende

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

    ;Autoupdater starten und Programm beenden
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $beenden
    $msgb = MsgBox(4,"Beenden","Wollen Sie wirklich beenden?")
    If $msgb = 6 Then Exit
    Case $update
    $msgb = MsgBox(4+32,"Update","Möchten Sie überprüfen ob eine aktuellere Version zur Verfügung steht?")
    If $msgb = 6 Then Run(@WindowsDir & "\Notepad.exe", "", @SW_MAXIMIZE) ; Hier kommt deine .exe hin
    If $msgb = 7 Then Exit ; Du willst wahrscheinlich mit Nein antworten wenn du kein Update machen willst, also kommt da eine 7 hin
    EndSwitch
    WEnd

    [/autoit]
  • Vielen Vielen Dank ihr seid die Besten die es gibt. ;)

    Ich habe wieder eine Frage:
    Wie kann ich in eine Liste (List) einen Dateinamen aus einem FileOpenDialog hinzufügen?
    Fileopedialog funzt und auch alles Andere.

  • [autoit]

    $file = FileOpenDialog("Wählen sie eine Datei aus", @WindowsDir, "Bilder (*.jpg;*.bmp)", 1)
    $split = StringSplit($file, "\")
    GUICtrlSetData($hList, $split[$split[0]])

    [/autoit]
  • Hallo lukiono,

    mit _GUICtrlListBox_AddString. Ich habe dazu einmal mein Skript zu deinem 1.Post von ListView auf <ListBox abgeändert:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <StaticConstants.au3>
    #Include <GuiListBox.au3>
    #include <File.au3>
    #include <array.au3>

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

    Opt('MustDeclareVars', 1)

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

    Global $msg, $message, $var, $aFiles, $idfrmMain, $sSourcePath, $sItem
    Global $szDrive, $szDir, $szFName, $szExt

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

    $idfrmMain = GUICreate("JPG-Viewer", 512, 460)
    Local $idfilemenu = GUICtrlCreateMenu("&Datei")
    Local $idfileitem = GUICtrlCreateMenuItem("Öffnen", $idfilemenu)
    GUICtrlSetState(-1, $GUI_DEFBUTTON)
    Local $idexititem = GUICtrlCreateMenuItem("Beenden", $idfilemenu)
    Local $idLB_Files = GUICtrlCreateList("",5,5,502,140)
    Local $idbtnShow = GUICtrlCreateButton("&Zeige Bild",5,150,150,25)
    Local $idPic = GUICtrlCreatePic("",5,180,256,256)
    ;_GUICtrlListView_SetColumnWidth($idLB_Files,1,0) ;zweite Spalte versteckt
    GUISetState()
    While 1
    $msg = GUIGetMsg()
    Switch $msg
    Case $idfileitem

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

    $message = "Um mehrere Dateien auszuwählen, ist die Strg-Taste oder die Shift-Taste zu drücken."

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

    $var = FileOpenDialog($message, @MyDocumentsDir & "", "Bilder (*.jpg;*.bmp)", 1 + 4)
    If @error Then
    MsgBox(4096, "", "Keine Datei(en) ausgewählt")
    Else
    $aFiles = StringSplit($var,"|")
    if $aFiles[0] > 1 then ;trifft nur bei Mehrfachauwal zu
    ;$aFiles[0] enthält Anzahl der Strings
    ;$aFiles[1] enthält den Pfad für alle ausgewählten Bilder
    ;$aFiles[2] enthält 1. Bild
    ;$aFiles[n+1] enthält n. Bild

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

    ;Rückgabe des Fileopenialogs in einzzenlne Strings für Array splitten
    _ArrayDisplay($aFiles) ;Array anzeigen nur zu Verständnisuwecken evtl. deaktivieren
    For $i = 2 to $aFiles[0]
    _GUICtrlListBox_AddString($idLB_Files,$aFiles[1] & "\" & $aFiles[$i])
    Next
    Else
    ConsoleWrite($aFiles[1] & @crlf)
    _GUICtrlListBox_AddString($idLB_Files,$aFiles[1])
    EndIf
    EndIf
    Case $idbtnShow
    $sItem = _GUICtrlListBox_GetText($idLB_Files,_GUICtrlListBox_GetCurSel($idLB_Files))
    If $idPic = 0 then
    $idPic = GUICtrlCreatePic($sItem,5,180,256,256)
    ;es gibt noch kein Control das ein Bild aufnehmen kann, also erzeugen
    ;nur vorichtshalber (in füheren Versionen wurde ohne Filenamen kein Pic-Control angelegt)
    Else
    GUICtrlSetImage($idPic,$sItem)
    ;es bereits ein Control das ein Bild aufnehmen kann, also anderes Bild anzeigen
    EndIf
    Case $GUI_EVENT_CLOSE, $idexititem
    Exit
    EndSwitch
    WEnd

    [/autoit]

    ich persönlich würde zwecks der Übersihtlichkeit bei der LV bleiben,

    mfg (Auto)Bert

  • Jetzt muss er nur noch mit StringSplit den Dateinamen von dem Pfad extrahieren. Welchen Vorteil hat eigentlich _GUICtrlListBox_AddString gegenüber GUICtrlSetData?

  • Hallo m-obi,

    dass der Pfad enthalten ist ist ja gerade von mir beabsichtigt, da man dadurch Dteien aus mehreren Ordnern einfügen kann und trotzdem auch wieder mit anderen Funktionen darauf zugreifen kann. Dasselbe hatte ich lukiono auch schon als Beispiel mit einer LV in einem anderen Thread gepostet ([ gelöst ] Diverse Fragen (Filebrowser, Formdesigner, Vorschau, Speichern)). Die LV hat den Vorteil man kann in einer Spalte nur die Dateien anzeigen un in einer 2. evtl. versteckten Spalte, den Pfad zu der Datei.
    Deine Lösung trägt bei zugelassener Mehrfachauswahl im FileOpendialog alle Dateien ein und als zusätzlichen Eintrag auch noch den Pfad, siehe hierzu

    Zitat

    Auszug aus Hilfe zu FileOpenDialog: Erfolg: Gibt den kompletten Pfad der ausgewählten Datei zurück. Rückgabe mehrerer Dateien wie folgt: "Verzeichnis|Datei1|Datei2|..."

    ,

    mfg (Auto)Bert

  • Hallo m-obi,

    dass der Pfad enthalten ist ist ja gerade von mir beabsichtigt, da man dadurch Dteien aus mehreren Ordnern einfügen kann und trotzdem auch wieder mit anderen Funktionen darauf zugreifen kann. Dasselbe hatte ich lukiono auch schon als Beispiel mit einer LV in einem anderen Thread gepostet ([ gelöst ] Diverse Fragen (Filebrowser, Formdesigner, Vorschau, Speichern)). Die LV hat den Vorteil man kann in einer Spalte nur die Dateien anzeigen un in einer 2. evtl. versteckten Spalte, den Pfad zu der Datei.

    Ich würde auch eine LV dafür nehmen. Aber er hat ja von Mehrfachauswahl nix gesagt.

    Deine Lösung trägt bei zugelassener Mehrfachauswahl im FileOpendialog alle Dateien ein und als zusätzlichen Eintrag auch noch den Pfad, siehe hierzu

    Zitat
    Auszug aus Hilfe zu FileOpenDialog: Erfolg: Gibt den kompletten Pfad der ausgewählten Datei zurück. Rückgabe mehrerer Dateien wie folgt: "Verzeichnis|Datei1|Datei2|..."

    ,

    mfg (Auto)Bert

    Ich habe ja auch in meinem Code keine Mehrfachauswahl angegeben. Aber somit kann er sich das jetzt aussuchen, ob er mit oder ohne nehmen will.

  • Vielen Dank euch allen

    Nun habe ich ein anderes Problem. Ich schreibe vom Arbeitspc aus. Denn am Montagabend habe ich ein WinUpdate gemacht für 7 und nun läuft mein Notebook nicht mehr an. Und der integrierte Recoverymanager wurde beim Upgrade nicht upgegradet.
    Nun, ich brauche die Win7 Upgrade CD. Diese bekomme ich aber frühestens am Donnerstag, da ich derzeit nicht zu Hause sondern in einer beruflichen Abklärung bin.
    Wann und ob ich weiterentwickeln kann oder ob ich meine Festplatte neu machen muss, werde ich dann merken. :(

    MfG
    Lukas

  • Ok, ich werde das Programm neu machen müssen.

    Neue Frage: (Nach Google- und Forensuchequälerei)
    Wie gestalte ich eigentlich eine Update.ini?

    Man liest immer wieder davon, etwas finden was in Richtung Tuto geht jedoch nicht. :huh:

  • Ja danke, aber bisschen ausführlicher sollte sein. HAb noch nie mit .ini gearbeitet. Ich möchte, dass es die .exe ersetzt wenn eine neuere Version verfügbar ist.

  • Du brauchst einfach nur 2 Dateien egal welcher Art. Die eine enthält die Version des vorhandenen Programms und die andere die Version der Datei auf dem Server, dann musst du beide auslesen und vergleichen. Jenachdem ob eine aktuellere Version vorhanden ist oder nicht die neue .exe mit InetGet() oder ähnlichem runterladen und die alte damit ersetzen. Ob du jetzt .ini oder .txt Dateien verwendest ist egal du kannst dann halt nicht mehr mit IniRead() und co sondern nur noch mit FileOpen() und FileRead() arbeiten.

  • Ich habe das Programm neu angefangen und die meisten Sachen schon eingebaut.
    Da ich bald eine Alpha für eine Community releasen will.

    Beim Auswählen des Bildes und dem Schreiben klappt es nicht.

    Es kommt keine Fehlermeldung, jedoch kann ich auf den Button klicken wie ich will. Es geht nicht.

    Hier mal das Script. Ich finde den Fehler irgendwie nicht :pinch:

    Spoiler anzeigen
    [autoit]

    #RequireAdmin

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

    ;SplashImageOn("Bla",@ProgramFilesDir&"/programm/images/preloader.jpg",800,600,"-1","-1",1)
    ;Sleep(5000)
    ;SplashOff()

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

    ;GUI Beginn -----------------------------------------------------------------------------------------------------------------------------------------------------------------------
    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <GUIListBox.au3>
    #include <ProgressConstants.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <File.au3>
    #include <array.au3>

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

    #Region ### START Koda GUI section ### Form=C:\Users\lukiono\Documents\programm\GUI_Template.kxf
    $GUI = GUICreate("Image Conversion Program", 802, 601, 193, 49)
    $unwandeln = GUICtrlCreateButton("Umwandeln", 192, 540, 161, 33, $WS_GROUP)
    $update = GUICtrlCreateButton("Update", 432, 540, 161, 33, $WS_GROUP)
    $beenden = GUICtrlCreateButton("Beenden", 664, 560, 129, 33, $WS_GROUP)
    $vorschau = GUICtrlCreatePic("", 8, 8, 385, 305, BitOR($SS_NOTIFY,$WS_GROUP,$WS_CLIPSIBLINGS))
    $status = GUICtrlCreateProgress(24, 480, 769, 25)
    $bildliste = GUICtrlCreateList("", 408, 8, 209, 253)
    $format = GUICtrlCreateList("", 648, 56, 81, 201)
    $text1 = GUICtrlCreateLabel("Format auswählen", 648, 24, 135, 24)
    GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")
    $bildwahl = GUICtrlCreateButton("Bild(er) auswählen", 408, 280, 209, 33, $WS_GROUP)
    $zielwahl = GUICtrlCreateButton("Zielverzeichnis auswählen", 624, 360, 169, 33, $WS_GROUP)
    $zielpfad = GUICtrlCreateList("", 16, 360, 601, 32)
    $fortschritt = GUICtrlCreateLabel("Fortschritt", 344, 440, 85, 28)
    GUICtrlSetFont(-1, 15, 400, 0, "MS Sans Serif")
    GUISetState(@SW_SHOW)
    $vorschaubutton = GUICtrlCreateButton("Vorschau", 240, 320, 153, 33, $WS_GROUP)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    ;GUI Ende ---------------------------------------------------------------------------------------------------------------------------------------------------------------------
    GUISetState()
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $beenden
    $msgb = MsgBox(4,"Beenden","Wollen Sie wirklich beenden?")
    If $msgb = 6 Then Exit
    Case $update
    $msgb = MsgBox(0+64,"Update","Diese Funktion steht zur Zeit nicht zur Verfügung!")

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

    $msg = GUIGetMsg()
    Switch $msg
    Case $bildliste

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

    $message = "Um mehrere Dateien auszuwählen, ist die Strg-Taste oder die Shift-Taste zu drücken."

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

    $bildwahl = FileOpenDialog($message, @MyDocumentsDir & "", "Bilder (*.jpg;*.bmp)", 1 + 4)
    If @error Then
    MsgBox(4096, "", "Keine Datei(en) ausgewählt")
    Else
    $aFiles = StringSplit($bildwahl,"|")
    if $aFiles[0] > 1 then ;trifft nur bei Mehrfachauwal zu
    ;$aFiles[0] enthält Anzahl der Strings
    ;$aFiles[1] enthält den Pfad für alle ausgewählten Bilder
    ;$aFiles[2] enthält 1. Bild
    ;$aFiles[n+1] enthält n. Bild

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

    ;Rückgabe des Fileopenialogs in einzzenlne Strings für Array splitten
    _ArrayDisplay($aFiles) ;Array anzeigen nur zu Verständnisuwecken evtl. deaktivieren
    For $i = 2 to $aFiles[0]
    _GUICtrlListBox_AddString($bildliste,$aFiles[1] & "\" & $aFiles[$i])
    Next
    Else
    ConsoleWrite($aFiles[1] & @crlf)
    _GUICtrlListBox_AddString($bildliste,$aFiles[1])
    EndIf
    EndIf
    Case $vorschaubutton
    $sItem = _GUICtrlListBox_GetText($bildliste,_GUICtrlListBox_GetCurSel($bildliste))
    If $vorschau = 0 then
    $vorschau = GUICtrlCreatePic($sItem,5,180,256,256)
    ;es gibt noch kein Control das ein Bild aufnehmen kann, also erzeugen
    ;nur vorichtshalber (in füheren Versionen wurde ohne Filenamen kein Pic-Control angelegt)
    Else
    GUICtrlSetImage($vorschau,$sItem)
    ;es bereits ein Control das ein Bild aufnehmen kann, also anderes Bild anzeigen
    EndIf
    EndSwitch
    EndSwitch
    WEnd

    [/autoit]

    MfG
    Lukas

  • Hallo lukiono,

    geändertes Skript

    Spoiler anzeigen
    [autoit]

    #RequireAdmin

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

    ;SplashImageOn("Bla",@ProgramFilesDir&"/programm/images/preloader.jpg",800,600,"-1","-1",1)
    ;Sleep(5000)
    ;SplashOff()

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

    ;GUI Beginn -----------------------------------------------------------------------------------------------------------------------------------------------------------------------
    #include <ButtonConstants.au3>
    #include <GUIConstantsEx.au3>
    #include <GUIListBox.au3>
    #include <ProgressConstants.au3>
    #include <StaticConstants.au3>
    #include <WindowsConstants.au3>
    #include <File.au3>
    #include <array.au3>

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

    #Region ### START Koda GUI section ### Form=C:\Users\lukiono\Documents\programm\GUI_Template.kxf
    $GUI = GUICreate("Image Conversion Program", 802, 601, 193, 49)
    $unwandeln = GUICtrlCreateButton("Umwandeln", 192, 540, 161, 33, $WS_GROUP)
    $update = GUICtrlCreateButton("Update", 432, 540, 161, 33, $WS_GROUP)
    $beenden = GUICtrlCreateButton("Beenden", 664, 560, 129, 33, $WS_GROUP)
    $vorschau = GUICtrlCreatePic("", 8, 8, 385, 305, BitOR($SS_NOTIFY, $WS_GROUP, $WS_CLIPSIBLINGS))
    $status = GUICtrlCreateProgress(24, 480, 769, 25)
    $bildliste = GUICtrlCreateList("", 408, 8, 209, 253)
    $format = GUICtrlCreateList("", 648, 56, 81, 201)
    $text1 = GUICtrlCreateLabel("Format auswählen", 648, 24, 135, 24)
    GUICtrlSetFont(-1, 12, 400, 0, "MS Sans Serif")
    $bildwahl = GUICtrlCreateButton("Bild(er) auswählen", 408, 280, 209, 33, $WS_GROUP)
    $zielwahl = GUICtrlCreateButton("Zielverzeichnis auswählen", 624, 360, 169, 33, $WS_GROUP)
    $zielpfad = GUICtrlCreateList("", 16, 360, 601, 32)
    $fortschritt = GUICtrlCreateLabel("Fortschritt", 344, 440, 85, 28)
    GUICtrlSetFont(-1, 15, 400, 0, "MS Sans Serif")
    GUISetState(@SW_SHOW)
    $vorschaubutton = GUICtrlCreateButton("Vorschau", 240, 320, 153, 33, $WS_GROUP)
    GUISetState(@SW_SHOW)
    #EndRegion ### END Koda GUI section ###
    ;GUI Ende ---------------------------------------------------------------------------------------------------------------------------------------------------------------------
    GUISetState()
    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $beenden
    $msgb = MsgBox(4, "Beenden", "Wollen Sie wirklich beenden?")
    If $msgb = 6 Then Exit
    Case $update
    $msgb = MsgBox(0 + 64, "Update", "Diese Funktion steht zur Zeit nicht zur Verfügung!")

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

    Case $bildwahl ;<=========== war auf $bildliste

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

    $message = "Um mehrere Dateien auszuwählen, ist die Strg-Taste oder die Shift-Taste zu drücken."

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

    $var = FileOpenDialog($message, @MyDocumentsDir & "", "Bilder (*.jpg;*.bmp)", 1 + 4)
    ;<============= $var war $Bildwahl hätte also die Button-ID überschrieben
    If @error Then
    MsgBox(4096, "", "Keine Datei(en) ausgewählt")
    Else
    $aFiles = StringSplit($var, "|") ;< ================== $var war $Bildwahl
    If $aFiles[0] > 1 Then ;trifft nur bei Mehrfachauwal zu
    ;$aFiles[0] enthält Anzahl der Strings
    ;$aFiles[1] enthält den Pfad für alle ausgewählten Bilder
    ;$aFiles[2] enthält 1. Bild
    ;$aFiles[n+1] enthält n. Bild

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

    ;Rückgabe des Fileopenialogs in einzzenlne Strings für Array splitten
    _ArrayDisplay($aFiles) ;Array anzeigen nur zu Verständnisuwecken evtl. deaktivieren
    For $i = 2 To $aFiles[0]
    _GUICtrlListBox_AddString($bildliste, $aFiles[1] & "\" & $aFiles[$i])
    Next
    Else
    ConsoleWrite($aFiles[1] & @CRLF)
    _GUICtrlListBox_AddString($bildliste, $aFiles[1])
    EndIf
    EndIf
    Case $vorschaubutton
    $sItem = _GUICtrlListBox_GetText($bildliste, _GUICtrlListBox_GetCurSel($bildliste))
    If $vorschau = 0 Then
    $vorschau = GUICtrlCreatePic($sItem, 5, 180, 256, 256)
    ;es gibt noch kein Control das ein Bild aufnehmen kann, also erzeugen
    ;nur vorichtshalber (in füheren Versionen wurde ohne Filenamen kein Pic-Control angelegt)
    Else
    GUICtrlSetImage($vorschau, $sItem)
    ;es bereits ein Control das ein Bild aufnehmen kann, also anderes Bild anzeigen
    EndIf
    EndSwitch
    WEnd

    [/autoit]

    Änderunen mit ;<=========== geknnzeichnet

    mfg (Auto)Bert

  • Vielen Dank.

    Ach und nenn mich doch einfach Luki. Schreibt sich schneller und hört sich besser an :D

    Neue Frage:
    Ich werde irgendwie aus der Hilfe nicht schlau

    Das Script zum Connecten des Updaters würde ich problemlos hinkriegen.
    Jedoch wie kriege ich die Statusbar dazu, genau nach dem Stand des Herunterladens zu gehen und danach mit dem Ersetzen der alten Datei nochmal ein Bitte warten.
    So dass es 90% zum Downloaden nimmt und 10% zum ersetzen der Datei?

  • Hi Luki,

    hier als Hilfe:

    [autoit]

    $hDownload = InetGet("http://www.autoitscript.com/cgi-bin/getfile.pl?autoit3/autoit-v3-setup.exe", @TempDir & "\autoit-v3-setup.exe", 1, 1)

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

    Do
    $aData = InetGetInfo($hDownload)
    ToolTip(Round((($aData[0] * 90) / $aData[1]), 0) & " %")
    Until $aData[2] ; Überprüfen ob der der Download abgeschlossen ist.

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

    Sleep(2000) ; um zu sehen das er bei 90 % aufhört, ab hier dann die Datei ersetzen

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

    FileDelete(@TempDir & "\autoit-v3-setup.exe") ; nur damit die Datei wieder gelöscht wird, da es ja nur ein Beispiel sein soll

    [/autoit]
  • Danke Danke

    Und schon kommt die nächste (nervende) Frage :whistling:

    Ich hab ja jetzt dieses Script genommen für den Downloader:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <ProgressConstants.au3>
    #include <WindowsConstants.au3>

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

    $hWindow = GUICreate("Updater", 402, 42)
    $pProgress = GUICtrlCreateProgress(8, 8, 377, 25)
    $pLabel_Fortschritt = GUICtrlCreateLabel("0 %", 192, 16, 36, 17)
    GUICtrlSetBkColor(-1, $GUI_BKCOLOR_TRANSPARENT)
    GUISetState(@SW_SHOW)

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

    If Not _Download("http://rcttainment.com/ICP/setup_update.exe") Then
    GUICtrlSetData($pLabel_Fortschritt, "Fehler beim Download")
    EndIf
    ;MsgBox(0, 'Download', "Return: " & _Download("http://johannes-log.spacequadrat.de/wordpuzzle/wordpuzzle.swf") &@CRLF & _
    ; "@error: " & @error & @CRLF & _
    ; "@extended: " & @extended)

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

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

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

    EndSwitch
    WEnd

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

    Func _Download($sFunc_URL = "")
    ; Author: Jautois, Prog@ndy
    Local $hDownload = InetGet($sFunc_URL, @ScriptDir & "\setup_update.exe", 1, 1)
    Do
    Sleep(10)
    Until InetGetInfo($hDownload, 0) Or InetGetInfo($hDownload, 2) ; warte bis Download anfängt oder fehlerhaft abbricht
    Local $hDateiGroese = InetGetInfo($hDownload, 1) ; Dateigröße aus InetGet auslesen
    If Not $hDateiGroese And Not InetGetInfo($hDownload,2) Then $hDateiGroese = InetGetSize($sFunc_URL) ; wenn nicht möglich, extra InetGetSize aufrufen
    Do
    Sleep(100)
    GUICtrlSetData($pProgress,(InetGetInfo($hDownload, 0)/$hDateiGroese)*100)
    GUICtrlSetData($pLabel_Fortschritt,Round((InetGetInfo($hDownload, 0)/$hDateiGroese)*100,1) & " %")
    Until InetGetInfo($hDownload, 2)
    MsgBox(1,"","Download abgeschlossen!"&@CRLF&"Mit Klick auf OK starten Sie das Setup")
    GUICtrlSetData($pLabel_Fortschritt,"100 %")
    Local $aInfo = InetGetInfo($hDownload)
    InetClose($hDownload)
    Return SetError($aInfo[4], $aInfo[5], $aInfo[3])
    EndFunc ;==>_Download

    [/autoit]

    Nun merkt aber jeder der das mal testweise ausführt, dass da trotz Fehler ein erfolgreich als MsgBox kommt.

    Müsste ich jetzt da trennen mit den Werten 0 und 1?

  • Lass doch die MsgBox aus der Funktion draußen und mache stattdessen die Meldung beim Funktionsaufruf also so:

    [autoit]

    If _Download("http://rcttainment.com/ICP/setup_update.exe") Then
    MsgBox(0, "", "Erfolg")
    Else
    MsgBox(0, "", "Fehler")
    EndIf

    [/autoit]