1. Dashboard
  2. Mitglieder
    1. Letzte Aktivitäten
    2. Benutzer online
    3. Team
    4. Mitgliedersuche
  3. Forenregeln
  4. Forum
    1. Unerledigte Themen
  • Anmelden
  • Registrieren
  • Suche
Alles
  • Alles
  • Artikel
  • Seiten
  • Forum
  • Erweiterte Suche
  1. AutoIt.de - Das deutschsprachige Forum.
  2. Mitglieder
  3. BugFix

Beiträge von BugFix

  • Bildgröße GuiCtrlCreatePic(...)

    • BugFix
    • 1. April 2007 um 17:11

    110 x 110 pixel (BildInfo)
    oder was willst du wissen?

  • ControlClick auf unbekanntes control

    • BugFix
    • 1. April 2007 um 16:31

    Keine weiteren Infos mit AutoIt Window Info - Tool ?

    - Programmname "xyz.exe" läuft
    - Fenster existiert und ist aktiv/inaktiv
    - welches Control soll betätigt werden

  • HEX-Code Farbtabelle

    • BugFix
    • 1. April 2007 um 15:51
    Zitat

    Dürfte ich erfahren, warum du die Übernahme in die Zwischenablage nicht mit der Funktion "GUICtrlCreateContextMenu" realisiert hast. Dann hättest du auch die Probleme mit der Farbe nicht gehabt (ich habe es gerade bei mir ausprobiert).


    Ja, du darfst. :)
    1. Weil der Mensch ein Gewohnheitstier und grundsätzlich faul ist. :D
    Ich hatte in einer anderen Anwendung ein ähnliches Kontextmenü bereits verwendet - hab es jetzt nur etwas angepaßt.
    2. Das Standard-Kontextmenü kann ich nicht (ohne weiteres) so gestalten, wie mein jetziges (Label mit Farbanzeige, Hintergrundfarbe)

    EDIT

    Noch eine optische Korrektur. Wenn ihr Gridlines angezeigt haben möchtet, muß die ListView Definition, wie folgt aussehen:

    [autoit]

    $ListView1 = GUICtrlCreateListView("Farbe|Name|HEX-Code", 0, 40, 420, 642, $LVS_SINGLESEL)
    _GUICtrlListViewSetColumnWidth(-1, 0, 135)
    _GUICtrlListViewSetColumnWidth(-1, 1, 135)
    _GUICtrlListViewSetColumnWidth(-1, 2, 128)
    GUICtrlSendMsg($ListView1, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_GRIDLINES, $LVS_EX_GRIDLINES)

    [/autoit]

    Ist aber Geschmackssache.

  • Nach $GUI_EVENT_SECONDARYDOWN Fehler in Listview

    • BugFix
    • 1. April 2007 um 15:39

    Ja, danke snoozer.
    Das ist der korrekte Weg. Der Teufel steckt,wie üblich, im Detail. :D

    Bitte auch in der Esc-Funktion ergänzen:

    Spoiler anzeigen
    [autoit]

    Func bCopyToClick()
    $strCopy = '$' & $col & " = " & $hex
    ClipPut($strCopy)
    GUISetState(@SW_HIDE, $GUICopy)
    ToolTip("Es wurde:" & @CRLF & @CRLF & @TAB & $strCopy & @CRLF & @CRLF & "in die Zwischenablage kopiert.", @DesktopWidth/2, @DesktopHeight/2, "Zwischenablage", 1, 1)
    Sleep(5000)
    ToolTip("")
    GUISetState(@SW_RESTORE,$Form1)
    EndFunc

    Func bEscCopyToClick()
    GUISetState(@SW_HIDE, $GUICopy)
    GUISetState(@SW_RESTORE,$Form1)
    EndFunc

    [/autoit]
  • Nach $GUI_EVENT_SECONDARYDOWN Fehler in Listview

    • BugFix
    • 1. April 2007 um 11:24

    Hi,
    ich habe
    hier meine HEX-Code Tabelle eingestellt.
    Dabei besteht noch folgendes Problem:
    Die Liste kann in drei verschiedenen Sortierfolgen angezeigt werden. Da kann ich auch beliebig zwischen wechseln - funktioniert.
    Wurde aber das Ereignis "$GUI_EVENT_SECONDARYDOWN" ausgewertet (Kontextmenü zum Kopieren) und ich will anschließend erneut eine andere Sortierung wählen, wird zwar die richtige Reihenfolge aufgelistet aber die Befehle für Setzen der Hintergrund- und Fontfarbe der Items werden nicht ausgeführt.

    Spoiler anzeigen
    [autoit]

    ;.....
    Dim $arColors[140][5] ; 0=Name, 1=Hex, 2=Sortier-Index Sättigung/Farbton, 3=Sortier-Index Helligkeit, 4= wenn 1 Schrift weiß
    ;.....
    $Form1 = GUICreate("HEX-Code Farbtabelle", 415, 683, -1, -1)
    GUISetOnEvent($GUI_EVENT_CLOSE, "AForm1Close")
    GUISetOnEvent($GUI_EVENT_SECONDARYDOWN, "SpecialEvents")
    ;.....
    Func rNameClick()
    _GUICtrlListViewDeleteAllItems($ListView1)
    _SetData(0)
    EndFunc

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

    Func rSattClick()
    _GUICtrlListViewDeleteAllItems($ListView1)
    _SetData(2)
    EndFunc

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

    Func rHellClick()
    _GUICtrlListViewDeleteAllItems($ListView1)
    _SetData(3)
    EndFunc

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

    Func _SetData($SortIndx)
    _ArraySort($arColors, 0, 0, 0, 5, $SortIndx)
    For $i = 0 To UBound($arColors)-1
    $arItem[$i] = GUICtrlCreateListViewItem( "|" &$arColors[$i][0] & "|0x" & Hex($arColors[$i][1],6), $ListView1)
    If $arColors[$i][4] = 1 Then GUICtrlSetColor(-1, 0xFFFFFF)
    GUICtrlSetBkColor(-1,$arColors[$i][1])
    Next
    EndFunc
    ;.....
    Func SpecialEvents()
    If @GUI_CTRLID = $GUI_EVENT_SECONDARYDOWN Then
    If ControlGetFocus($Form1, "HEX-Code Color Table") = "SysListView321" Then
    $ind = _GUICtrlListViewGetCurSel($ListView1)
    $col = _GUICtrlListViewGetItemText($ListView1, $ind, 1)
    $hex = _GUICtrlListViewGetItemText($ListView1, $ind, 2)
    If $arColors[$ind][4] = 1 Then
    GUISetBkColor($PaleGreen, $GUICopy)
    GUICtrlSetColor($lbShowColor, 0xFFFFFF)
    Else
    GUISetBkColor($Navy, $GUICopy)
    GUICtrlSetColor($lbShowColor, 0x000000)
    EndIf
    GUICtrlSetBkColor($lbShowColor, $arColors[$ind][1])
    GUICtrlSetData($lbShowColor, $arColors[$ind][0])
    GUISetState(@SW_SHOW, $GUICopy)
    EndIf
    EndIf
    EndFunc
    ;.....

    [/autoit]


    :hm:

    EDIT

    So, hab nun auch versucht mit "WM_NOTIFY event handler" über SingleClick, DoubleClick oder RightClick auszuwerten.
    Es ist völlig Banane, welches Ereignis ich auswerte - hinterher funktioniert die Farbsetzung nicht mehr. :weinen:

    EDIT2

    Ha, ich habs gefunden.
    Ist zwar für mich nicht erklärbar warum es so ist, aber hier liegt der Fehler:

    $arItem[$i] = GUICtrlCreateListViewItem( "|" &$arColors[$i][0] & "|0x" & Hex($arColors[$i][1],6), $ListView1)
    If $arColors[$i][4] = 1 Then GUICtrlSetColor(-1, 0xFFFFFF)
    GUICtrlSetBkColor(-1,$arColors[$i][1])

    Mit -1 beziehe ich mich auf das zuvor erstellte ListViewItem.
    Aber das versagt nach einem Event. Setze ich dafür $arItem[$i] ein, dann funktioniert es!

  • HEX-Code Farbtabelle

    • BugFix
    • 31. März 2007 um 00:16

    Hi,
    da heute meine Lieblingswebsite mit Farbcodes down war, habe ich mir jetzt selbst eine Tabelle erstellt.
    Farbe in der Liste markieren, per Rechtsklick Kontextmenü aufrufen. Es wird dann der String "$farbname = hexcode" in die Zwischenablage kopiert.

    EDIT

    Ich hab die Tabelle noch etwas umgestaltet, die Farben werden jetzt wahlweise sortiert nach:
    - Name
    - Sättigung oder
    - Helligkeit

    Das vereinfacht etwas die Auswahl.

    EDIT 14.01.08

    Der Code ist jetzt der AutoIt-Version 3.2.10.0 angepaßt.

    Edit 10.07.2008
    Anpassung an Version 3.2.12.0 erfolgt.

    Edit 11.07.2008
    Habe Oscars Anregung aufgegriffen (wegen Flackern).
    RGB wird mit angezeigt.
    Außerdem meinen Farbmixer, den ich in einem anderen Programm hatte, mit integriert. Dieser hat auch einen ColorPicker, heißt hierdrin: Snap Color.

    Edit 13.07.2008
    Jetzt ist auch ein ordentliches "Zielkreuz" vorhanden um eine Farbe aus irgendeinem Fenster aufzugreifen.

  • Objekte unter AutoIt

    • BugFix
    • 30. März 2007 um 19:03

    Noch was schönes: Das Script_Center

    Sieht aus, wie die AutoIt-Hilfe. Thema anklicken und das fertige (WMI)-Script steht zur Verfügung. Da braucht man nicht erst suchen, was ich denn mit welcher Methode machen kann.

    EDIT
    Hab noch ein Tool gefunden, vergleichbar mit WMICreator: Scriptomatic 2.0 .
    Welches Tool man verwendet ist sicher Geschmackssache, aber lest mal die ReadMe bei Scriptomatic. Ein echter Brüller. :D

    EDIT2
    Manchmal kann man sich nur selber prügeln :hammer:
    Ich habe grad in Scriptomatic noch eine Sektion für AutoIt eingebunden (funzt auch prima). Die Arbeit hätte ich mir sparen können - Es gibt auch eine AutoIt-Version davon.
    Den Link hatte übrigens ytwinky schon mal eingestellt.
    Also hier die direkte Umsetzung für und mit AutoIt: AutoIt Script-o-matic von Jon

    Dateien

    script_center.zip 1,56 MB – 543 Downloads Scriptomatic.zip 311,96 kB – 535 Downloads
  • AVIs auf Tabs einer GUI ändern

    • BugFix
    • 30. März 2007 um 18:14

    So gehts, du mußt das Tab neu erstellen:

    [autoit]


    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Button1
    GUICtrlDelete($Avi1)
    GUICtrlDelete($TabSheet2)
    $TabSheet2 = GUICtrlCreateTabItem("Tab 2")
    $Avi1 = GUICtrlCreateAvi("shell32.dll", 170, 16, 36, 272, 60, BitOR($ACS_TRANSPARENT,$ACS_AUTOPLAY))
    EndSwitch
    WEnd

    [/autoit]
  • Objekte unter AutoIt

    • BugFix
    • 30. März 2007 um 17:54

    Hi,
    nach langem Zögern habe ich mich nun doch mal überwunden und mich etwas intensiver mit der Nutzung von Objekten unter AutoIt befasst.
    Und ich war angenehm überrascht, wie simpel damit etliche Probleme zu lösen sind. Der große Vorteil auch für alle jene, die bisher recht wenig mit Objekten-Klassen-Methoden am Hut haben: MS bietet mit dem Gratistool "WMI Code Generator" eine top Unterstützung. Man kann damit den WMI-Code generieren und dann fast 1:1 in AutoIt umsetzen.

    Mal ein Bsp., Überwachen ob "Notepad.exe" gestartet wird und dann eine Meldung ausgeben:

    WMI Code

    Code
    strComputer = "."
    Set objSWbemServices = GetObject("winmgmts:" & _
        "{impersonationLevel=impersonate}!" & _
        "\\" & strComputer & "\root\cimv2")
    
    
    Set objEventSource = objSWbemServices.ExecNotificationQuery( _
        "SELECT * FROM __InstanceCreationEvent " & _
        "WITHIN 10 " & _
        "WHERE TargetInstance " & _
        "ISA 'Win32_Process' " & _
        "AND TargetInstance.Name = 'notepad.exe'")
    
    
    Set objEventObject = objEventSource.NextEvent()
    Wscript.Echo "Notepad.exe wurde soeben gestartet."
    Alles anzeigen


    und dasselbe in AutoIt

    [autoit]


    $strComputer = "."
    $objSWbemServices = ObjGet("winmgmts:" & _
    "{impersonationLevel=impersonate}!" & _
    "\\" & $strComputer & "\root\cimv2")
    $objEventSource = $objSWbemServices.ExecNotificationQuery( _
    "SELECT * FROM __InstanceCreationEvent " & _
    "WITHIN 10 " & _
    "WHERE TargetInstance " & _
    "ISA 'Win32_Process' " & _
    "AND TargetInstance.Name = 'Notepad.exe'")
    $objEventObject = $objEventSource.NextEvent()
    MsgBox(0, '', "Notepad wurde soeben gestartet.")

    [/autoit]

    Der WMICodeCreator listet alle auf dem PC zu findenden Klassen auf, mit den zur Verfügung stehenden Eigenschaften. Ein Mausklick und der Code ist generiert. Und mit wenigen Änderungen ist er dann in AutoIt verfügbar.

    Der Vorteil, den ich hier sehe ist, dass man somit wesentlich tiefer in die Systemereignisse "eintauchen" kann bzw. einige Aufgaben sich einfacher lösen lassen als mit anderen AutoIt-Mitteln.
    Ich bin mal so frei und häng den WMICodeCreator mit an - das erspart euch den GenuineCheck. ;)
    Übrigens - das Proggi bedarf keiner Installation. Entpacken und ausführen.

    Dateien

    WMICodeCreator.zip 124,29 kB – 558 Downloads
  • Fenster erkennen bei wechselndem Titel

    • BugFix
    • 30. März 2007 um 14:55

    Dann löse es mit Shell-Object:

    [autoit]

    $oShell = ObjCreate("shell.application") ; Explorer als Shell-Object
    $oShellWindows = $oShell.windows ; Auflistung aller offenen Shell-Windows

    If Isobj($oShellWindows) Then
    $string = ""
    For $Window In $oShellWindows
    $String &= $Window.LocationName & @CRLF
    Next
    Msgbox(0,"Shell Windows","Es existieren folgende Explorer-Fenster:" & @CRLF & @CRLF & $String)
    Endif
    Exit

    [/autoit]
  • Kontextmenü für Edit-Control deaktivieren

    • BugFix
    • 30. März 2007 um 10:32

    Hallo,
    ich möchte für ein Editcontrol ein eigenes Kontextmenü erstellen - soweit auch kein Problem.
    Leider hat das Editcontrol standardmäßig ein Kontextmenü:
    [Blockierte Grafik: http://img-up.net/img/EditKontex-gPq.PNG]

    Weiß jemand, wie ich das deaktivieren kann?

    EDIT

    OK, geht leider nicht. *traurig-bin*

  • Fenster erkennen bei wechselndem Titel

    • BugFix
    • 29. März 2007 um 22:32

    WinGetClassList ( "title" [, "text"] )

  • cmd aus autoit aurfufen=> Problem

    • BugFix
    • 29. März 2007 um 22:29

    Nutze doch das Flag STDOUT der Funktion Run und lies die Rückgabewerte mit StdoutRead() aus.
    Bsp. ungetestet

    Spoiler anzeigen
    [autoit]

    #include <Constants.au3>

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

    $foo = Run(@ComSpec & ' /C rar e "' & $TYP1 & '" "' & $sel2_folder & '" "' & $sel_folder & '"', @SystemDir, @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)

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

    While 1
    $line = StdoutRead($foo)
    If @error Then ExitLoop
    MsgBox(0, "STDOUT read:", $line)
    Wend

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

    While 1
    $line = StderrRead($foo)
    If @error Then ExitLoop
    MsgBox(0, "STDERR read:", $line)
    Wend

    [/autoit]
  • GuiCtrlCreateLabel mit Vorgabe hidden

    • BugFix
    • 29. März 2007 um 20:33

    Geht doch problemlos, ohne dass das Label beim Erstellen sichtbar wird:

    [autoit]

    Func _LabelCreate()
    $label = GUICtrlCreateLabel("LABEL", 100, 100)
    GUICtrlSetState(-1,$GUI_HIDE)
    EndFunc

    [/autoit]

    Falls du das sehen kannst bist du Supermann. :rofl:

    Und seit wann ist es unsaubere Programmierung, wenn ich ein Control erstelle und im nächste Schritt dessen Eigenschaften definiere ?
    Dieser Logik kann ich nicht folgen.

  • GuiCtrlCreateLabel mit Vorgabe hidden

    • BugFix
    • 28. März 2007 um 20:59

    Wenn du deine GUI definierst kannst du doch sofort nach der Ctrl-Erstellung den Status setzen:

    GUICreate()
    GuiCtrlCreate....
    GUICtrlSetState(-1, $GUI_HIDE)

    Edit Schon wieder wer schneller :weinen:

  • array durchsuchen

    • BugFix
    • 28. März 2007 um 20:45

    Hier mal ein einfaches Beispiel. Voraussetzung ist, dass hier das Array1 die fixen Werte enthält und die variablen Werte im Array2 sind.

    Spoiler anzeigen
    [autoit]

    Dim $arArray1[10], $arArray2[10], $Unterschied = ""

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

    $arArray1[0] = "a"
    $arArray1[1] = "b"
    $arArray1[2] = "c"
    $arArray1[3] = "d"
    $arArray1[4] = "e"

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

    $arArray2[0] = "a"
    $arArray2[1] = "b"
    $arArray2[2] = "c"
    $arArray2[3] = "d"
    $arArray2[4] = "e"
    $arArray2[5] = "f"
    $arArray2[6] = "g"

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

    For $i = 0 To UBound($arArray1)-1
    If $arArray1[$i] <> $arArray2[$i] Then $Unterschied &= $arArray2[$i] & "|"
    Next

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

    MsgBox(0, '', $Unterschied)

    [/autoit]
  • Icons in ListViewColumn zentrieren

    • BugFix
    • 28. März 2007 um 17:10
    Zitat

    Wie lässt sich ein Icon in einer Spalte zentrieren?

    :confused:

    Trägst du statt Text, Icons in die ListViewElemente ein? :rolleyes:

    Poste mal etwas von dem Code, wo man sieht was du da mit den Icons treibst.

  • array durchsuchen

    • BugFix
    • 28. März 2007 um 17:04
    Zitat

    Hi,

    mit dieser Funktion kann man 2 Arrays vergleichen und gibt die Übereinstimmungen ausgeben lassen.

    #include <Array.au3>
    $Pos = _ArraySearch ($wert, $wert2)

    MfG
    Der_Doc

    Sorry Doc, aber dem muß wiedersprochen werden.
    Dir müßte selbst auffallen, dass gar kein Array zur Suche angegeben ist.
    Hier die korrekte Syntax für den Suchbefehl.

    [autoit]


    #include <Array.au3>
    _ArraySearch ( $ZuDurchsuchendesArray, $Suchbegriff, $Startindex = 0, $Endindex = 0, Sensitivität = 0, SucheMitTeilweiserUebereinstimmung = False )

    [/autoit]

    @Health
    Beide Arrays sortieren, dann vergleichen:
    Element[$i] von Array1 = Element[$i] von Array2
    wenn nicht wurde was geändert.

  • Install-Script-Generator

    • BugFix
    • 25. März 2007 um 23:45

    Wie im letzen Edit bei Post 1 angekündigt, hier eine GUI in der das Ganze komfortabel ausgewählt und nachbearbeitet werden kann ( z.B. einzelne Dateien entfernen ).

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    #include <Array.au3>
    #include <file.au3>
    #include <string.au3>
    Opt("GUIOnEventMode", 1)
    Dim $aRadio[7], $FileOut, $source, $target, $var, $editStr = "", $fhTmp, $fhOut, $sizeRaw
    Dim $gesFiles = 0 ; Anzahl Dateien gesamt im Installscript
    Dim $count = 0 ; Zähler Durchläufe
    Dim $progressNew = 0 ; Progressschritte neu berechnen wenn > 0
    Dim $aTmpCode ; Code temporär einlesen
    Dim $tmpFile1 = @ScriptDir & "\TmpInstallAU3.txt"
    Dim $tmpFile2 = @ScriptDir & "\TmpInstallAU3.au3"

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

    $GUI = GUICreate("Installationsscript generieren", 695, 646, -1, -1)
    GUISetOnEvent($GUI_EVENT_CLOSE, "GUIClose")
    $grOpt = GUICtrlCreateGroup("Optionen im Installscript", 11, 10, 672, 50)
    $chStatus = GUICtrlCreateCheckbox("Statusbar", 104, 30, 97, 17)
    GUICtrlSetState(-1, $GUI_CHECKED)
    $chLog = GUICtrlCreateCheckbox("Logdatei + Fehlerbehandlung", 330, 30, 164, 17)
    GUICtrlSetState(-1, $GUI_CHECKED)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $grSource = GUICtrlCreateGroup("Quellpfad mit Installationsdateien", 11, 70, 672, 50)
    $iPath = GUICtrlCreateInput("", 104, 87, 383, 21)
    $bPath = GUICtrlCreateButton("Auswählen", 522, 87, 85, 21, 0)
    GUICtrlSetOnEvent(-1, "bPathClick")
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $grTarget = GUICtrlCreateGroup("Installationsziel", 11, 130, 672, 97)
    $aRadio[0] = GUICtrlCreateRadio("@DesktopDir", 38, 148, 89, 17)
    GUICtrlSetOnEvent(-1, "rDesktopClick")
    $aRadio[1] = GUICtrlCreateRadio("@MyDocumentsDir", 38, 172, 113, 17)
    GUICtrlSetOnEvent(-1, "rMyDocClick")
    $aRadio[2] = GUICtrlCreateRadio("@HomeDrive", 38, 196, 113, 17)
    GUICtrlSetOnEvent(-1, "rHomeDriveClick")
    $aRadio[3] = GUICtrlCreateRadio("@ProgramsDir", 235, 148, 113, 17)
    GUICtrlSetOnEvent(-1, "rProgDirClick")
    $aRadio[4] = GUICtrlCreateRadio("@ProgramFilesDir", 235, 172, 113, 17)
    GUICtrlSetOnEvent(-1, "rProgFileDirClick")
    $aRadio[5] = GUICtrlCreateRadio("@SystemDir", 431, 148, 113, 16)
    GUICtrlSetOnEvent(-1, "rSysDirClick")
    $aRadio[6] = GUICtrlCreateRadio("@WindowsDir", 431, 172, 113, 17)
    GUICtrlSetOnEvent(-1, "rWinDirClick")
    $iTarget = GUICtrlCreateInput("", 235, 194, 428, 21)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $bFileOut = GUICtrlCreateButton("Ausgabedatei", 11, 239, 84, 21, 0)
    GUICtrlSetOnEvent(-1, "bFileOutClick")
    $iFileOut = GUICtrlCreateInput("", 104, 239, 383, 21, BitOR($ES_AUTOHSCROLL,$ES_READONLY))
    $bGenerieren = GUICtrlCreateButton("Generiere Code", 522, 239, 160, 21, 0)
    GUICtrlSetOnEvent(-1, "bGenerierenClick")
    $grCode = GUICtrlCreateGroup("Code (editieren)", 11, 272, 672, 309)
    $eCode = GUICtrlCreateEdit("", 19, 291, 655, 275)
    GUICtrlCreateGroup("", -99, -99, 1, 1)
    $bOKnext = GUICtrlCreateButton("Übernehmen", 573, 602, 110, 25, 0)
    GUICtrlSetOnEvent(-1, "bOKnextClick")
    $eInfo = GUICtrlCreateEdit("", 19, 588, 540, 51, $ES_READONLY)
    GUICtrlSetData(-1, _
    "Der aktuell generierte Code wird in eine temporäre Datei übernommen. Nach Übernahme können Dateien aus " & _
    "neuem Quellpfad zugefügt werden. Beim Schließen der GUI werden alle Daten in die Ausgabedatei geschrieben. " & _
    "Wenn nötig, werden Kopf- und Fußbereich zugefügt und die Progressschritte neu berechnet.")
    GUICtrlSetState($bPath, $GUI_FOCUS)
    GUISetState(@SW_SHOW)
    _CodeDisable()

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

    While 1
    Sleep(100)
    WEnd

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

    Func _RadioUncheck()
    For $i = 0 To UBound($aRadio)-1
    GUICtrlSetState($aRadio[$i], $GUI_UNCHECKED)
    Next
    EndFunc

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

    Func _SourceTargetDisable()
    GUICtrlSetState($grSource, $GUI_DISABLE)
    GUICtrlSetState($iPath, $GUI_DISABLE)
    GUICtrlSetState($bPath, $GUI_DISABLE)
    GUICtrlSetState($grTarget, $GUI_DISABLE)
    GUICtrlSetState($iTarget, $GUI_DISABLE)
    For $i = 0 To UBound($aRadio)-1
    GUICtrlSetState($aRadio[$i], $GUI_DISABLE)
    Next
    EndFunc

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

    Func _SourceTargetEnable()
    GUICtrlSetState($grSource, $GUI_ENABLE)
    GUICtrlSetState($iPath, $GUI_ENABLE)
    GUICtrlSetState($bPath, $GUI_ENABLE)
    GUICtrlSetState($grTarget, $GUI_ENABLE)
    GUICtrlSetState($iTarget, $GUI_ENABLE)
    For $i = 0 To UBound($aRadio)-1
    GUICtrlSetState($aRadio[$i], $GUI_ENABLE)
    Next
    EndFunc

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

    Func _OptDisable()
    GUICtrlSetState($grOpt, $GUI_DISABLE)
    GUICtrlSetState($chStatus, $GUI_DISABLE)
    GUICtrlSetState($chLog, $GUI_DISABLE)
    EndFunc

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

    Func _CodeDisable()
    GUICtrlSetState($grCode, $GUI_DISABLE)
    GUICtrlSetState($eCode, $GUI_DISABLE)
    GUICtrlSetState($bOKnext, $GUI_DISABLE)
    EndFunc

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

    Func _CodeEnable()
    GUICtrlSetState($grCode, $GUI_ENABLE)
    GUICtrlSetState($eCode, $GUI_ENABLE)
    GUICtrlSetState($bOKnext, $GUI_ENABLE)
    EndFunc

    Func bFileOutClick()
    $FileOut = FileOpenDialog("Ausgabedatei festlegen.", @MyDocumentsDir & "\", "AutoIt Datei (*.au3)", 8, "Install.au3")
    If @error Then
    MsgBox(16,"","Keine Datei gewählt.")
    Return
    Else
    GUICtrlSetData($iFileOut, $FileOut)
    EndIf
    EndFunc

    Func bGenerierenClick()
    $source = GUICtrlRead($iPath)
    $target = GUICtrlRead($iTarget)
    If ($source <> "") And ($target <> "") And ($FileOut <> "") Then
    _OptDisable()
    _SourceTargetDisable()
    _CodeEnable()
    GUICtrlSetState($bFileOut, $GUI_DISABLE)
    GUICtrlSetState($bGenerieren, $GUI_DISABLE)
    $count += 1
    If $count > 1 And GUICtrlRead($chStatus) = $GUI_CHECKED Then $progressNew = 1
    Select
    Case GUICtrlRead($chStatus) = $GUI_CHECKED And GUICtrlRead($chLog) = $GUI_CHECKED ; m. Statusbar, m. Log/Fehle
    _WriteInstall($source, $target, $tmpFile1)
    Case GUICtrlRead($chStatus) = $GUI_CHECKED And GUICtrlRead($chLog) = $GUI_UNCHECKED ; m. Statusbar, o. Log/Fehler
    _WriteInstall($source, $target, $tmpFile1, -1, 0)
    Case GUICtrlRead($chStatus) = $GUI_UNCHECKED And GUICtrlRead($chLog) = $GUI_CHECKED ; o. Statusbar, m. Log/Fehler
    _WriteInstall($source, $target, $tmpFile1, 0)
    Case GUICtrlRead($chStatus) = $GUI_UNCHECKED And GUICtrlRead($chLog) = $GUI_UNCHECKED ; o. Statusbar, o. Log/Fehler
    _WriteInstall($source, $target, $tmpFile1, 0, 0)
    EndSelect
    If Not _FileReadToArray($tmpFile1, $aTmpCode) Then ; in Array einlesen
    MsgBox(16, 'ACHTUNG!', "Datei: '" & $tmpFile1 &"' nicht vorhanden oder leer!")
    Return
    EndIf
    $sizeRaw = FileGetSize($tmpFile1)
    FileDelete($tmpFile1)
    For $i = 1 To $aTmpCode[0] ; String für Edit erzeugen
    If $i = 1 Then
    $editStr = $aTmpCode[$i]
    Else
    $editStr &= @CRLF & $aTmpCode[$i]
    EndIf
    Next
    GUICtrlSetData($eCode, $editStr)
    $editStr = GUICtrlRead($eCode)
    $editStr = StringSplit($editStr, @LF)
    $fhTmp = FileOpen($tmpFile2, 1)
    For $i = 1 To $editStr[0]
    FileWriteLine($fhTmp, $editStr[$i] & @CRLF)
    Next
    FileClose($fhTmp)
    Else
    If $source = "" Then
    MsgBox(16,"ACHTUNG!", "Kein Quell-Pfad mit Installationsdateien ausgewählt!")
    ElseIf $target = "" Then
    MsgBox(16,"ACHTUNG!", "Kein Ziel-Pfad für Installationsdateien ausgewählt!")
    Else
    MsgBox(16,"ACHTUNG!", "Keine Ausgabedatei festgelegt!")
    EndIf
    EndIf
    EndFunc

    Func bOKnextClick()
    If FileGetSize($tmpFile2) <> $sizeRaw Then $progressNew = 1 ; Datei wurde editiert
    GUICtrlSetData($eCode, "")
    _SourceTargetEnable()
    _RadioUncheck()
    _CodeDisable()
    GUICtrlSetData($iPath, "")
    GUICtrlSetData($iTarget, "")
    GUICtrlSetState($bGenerieren, $GUI_ENABLE)
    EndFunc

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


    Func bPathClick()
    $var = FileSelectFolder("Ordner mit zu installierenden Dateien:","", 2+4)
    If @error Then
    If GUICtrlRead($iPath) = "" Then MsgBox(16,"ACHTUNG!", "Kein Ordner gewählt!")
    Return
    Else
    GUICtrlSetData($iPath, $var)
    EndIf
    EndFunc

    Func GUIClose()
    Local $percent, $aTmp
    If $count = 0 Then Exit
    _FileReadToArray($tmpFile2, $aTmp)
    FileDelete($tmpFile2)
    $fhOut = FileOpen($FileOut, 1)
    If $progressNew = 1 Then ; Progresschritte neu berechnen
    For $i = 1 To $aTmp[0]
    If StringInStr($aTmp[$i], 'ProgressSet') Then
    $gesFiles += 1
    EndIf
    Next
    $k = 0
    For $i = 1 To $aTmp[0]
    If StringInStr($aTmp[$i], 'ProgressSet') Then
    $k += 1
    $percent = Round(100/$gesFiles*$k)
    $var = _StringBetween($aTmp[$i], "(", "," )
    $aTmp[$i] = StringReplace($aTmp[$i], $var[0], $percent)
    EndIf
    Next
    EndIf
    Select
    Case GUICtrlRead($chStatus) = $GUI_CHECKED And GUICtrlRead($chLog) = $GUI_CHECKED
    FileWrite($fhOut, "#include <file.au3>" & @CRLF)
    FileWrite($fhOut, "Dim $fehler = 0" & @CRLF)
    FileWrite($fhOut, 'ProgressOn("Installation", "Installationsfortschritt", "")' & @CRLF)
    Case GUICtrlRead($chLog) = $GUI_CHECKED
    FileWrite($fhOut, "#include <file.au3>" & @CRLF)
    Case GUICtrlRead($chStatus) = $GUI_CHECKED And GUICtrlRead($chLog) = $GUI_UNCHECKED
    FileWrite($fhOut, 'ProgressOn("Installation", "Installationsfortschritt", "")' & @CRLF)
    EndSelect
    For $i = 1 To $aTmp[0]
    If $aTmp[$i] <> "" Then FileWrite($fhOut, $aTmp[$i] & @CRLF) ; aus Tmp2 in Ausgabedatei schreiben
    Next
    Select ; Fußbereich zufügen
    Case GUICtrlRead($chStatus) = $GUI_CHECKED And GUICtrlRead($chLog) = $GUI_CHECKED ; Statusbar m. Log/Fehler
    FileWrite($fhOut, 'If $fehler = 1 Then' & @CRLF)
    FileWrite($fhOut, @TAB & 'ProgressSet( 100, "s. ' & $TARGET & ' & ' & '\Install.log", "Installation fehlerhaft!")' & @CRLF)
    FileWrite($fhOut, 'Else' & @CRLF)
    FileWrite($fhOut, @TAB & 'ProgressSet( 100, "Beendet", "Installation erfolgreich!")' & @CRLF)
    FileWrite($fhOut, 'EndIf' & @CRLF)
    FileWrite($fhOut, 'Sleep(3000)' & @CRLF)
    FileWrite($fhOut, 'ProgressOff()' & @CRLF)
    Case GUICtrlRead($chStatus) = $GUI_CHECKED And GUICtrlRead($chLog) = $GUI_UNCHECKED ; Statusbar o. Log/Fehler
    FileWrite($fhOut, 'ProgressSet( 100, "", "Installation abgeschlossen!")' & @CRLF)
    FileWrite($fhOut, 'Sleep(3000)' & @CRLF)
    FileWrite($fhOut, 'ProgressOff()' & @CRLF)
    EndSelect
    FileClose($fhOut)
    MsgBox(64, "Script Generator", "Ausgabedatei" & @LF & @LF & $FileOut & @LF & @LF & "erstellt." )
    Exit
    EndFunc

    Func rDesktopClick()
    GUICtrlSetData($iTarget, "@DesktopDir")
    EndFunc

    Func rHomeDriveClick()
    GUICtrlSetData($iTarget, "@HomeDrive")
    EndFunc

    Func rMyDocClick()
    GUICtrlSetData($iTarget, "@MyDocumentsDir")
    EndFunc

    Func rProgDirClick()
    GUICtrlSetData($iTarget, "@ProgramsDir")
    EndFunc

    Func rProgFileDirClick()
    GUICtrlSetData($iTarget, "@ProgramFilesDir")
    EndFunc

    Func rSysDirClick()
    GUICtrlSetData($iTarget, "@SystemDir")
    EndFunc

    Func rWinDirClick()
    GUICtrlSetData($iTarget, "@WindowsDir")
    EndFunc

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

    ; DIE FOLGENDE FUNKTION WURDE FÜR DIESEN EINSATZ ETWAS VERÄNDERT. IM ORIGINAL SIND
    ; DIE HIER AUSKOMMENTIERTEN BEREICHE FREI.
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ; Funktion _WriteInstall($SOURCEPATHES, $TARGET, $FILENAME[, $S_BAR=-1[, $LOG=-1]])
    ;
    ; Beschreibung Erzeugt eine Installationsdatei, mit FileInstall()-Routinen
    ; für alle Dateien des bzw. der Quellpfade, Optional Install-Log und
    ; Progressbar für Installationsfortschritt
    ;
    ; Parameter $SOURCEPATHES Pfad(e) des/der Quellordner getrennt mit "|"
    ; als String - keine Macros oder Variablen
    ; $TARGET Zielordner für Installation,
    ; Macros und Variablen können verwendet werden
    ; $FILENAME Name der zu erzeugenden Datei (z.B. 'setup.au3')
    ; als String - keine Macros oder Variablen
    ; $S_BAR Statusbar generieren (-1 JA, 0 NEIN) [Optional], Default -1
    ; $LOG Logdatei und Fehlercheck (-1 JA, 0 NEIN) [Optional], Default -1
    ;
    ; Autor BugFix ( [email='bugfix@autoit.de'][/email] )
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    Func _WriteInstall($SOURCEPATHES, $TARGET, $FILENAME, $S_BAR=-1, $LOG=-1)
    Dim $QUELLPFADE, $aFILES[1], $FH = FileOpen($FILENAME,1), $PERCENT
    $aFILES[0] = 0
    #cs
    If ($S_BAR = -1) And ($LOG = -1) Then
    FileWrite($FH, "#include <file.au3>" & @CRLF)
    FileWrite($FH, "Dim $fehler = 0" & @CRLF)
    FileWrite($FH, 'ProgressOn("Installation", "Installationsfortschritt", "")' & @CRLF)
    ElseIf $LOG = -1 Then
    FileWrite($FH, "#include <file.au3>" & @CRLF)
    ElseIf ($S_BAR = -1) And ($LOG <> -1) Then
    FileWrite($FH, 'ProgressOn("Installation", "Installationsfortschritt", "")' & @CRLF)
    EndIf
    #ce
    If StringInStr($SOURCEPATHES, "|") Then $QUELLPFADE = StringSplit($SOURCEPATHES, "|")
    If IsArray($QUELLPFADE) Then
    For $i = 1 To $QUELLPFADE[0]
    $var = _GetFileList($QUELLPFADE[$i], "*.*")
    For $k = 1 To $var[0]
    _ArrayAdd($aFILES, $var[$k])
    $aFILES[0] += 1
    Next
    Next
    Else
    $var = _GetFileList($SOURCEPATHES, "*.*")
    If Not IsArray($var) Then
    MsgBox(16, 'Achtung', 'In ' & $SOURCEPATHES & ' sind keine Dateien vorhanden!')
    Return 0
    EndIf
    For $i = 1 To $var[0]
    _ArrayAdd($aFILES, $var[$i])
    $aFILES[0] += 1
    Next
    EndIf
    Select
    Case ($S_BAR = -1) And ($LOG = -1) ; mit Statusbar und Log/Fehlercheck
    For $i = 1 To $aFILES[0]
    $PERCENT = Round(100/$aFILES[0]*$i)
    $DIERECTORIES = StringTrimLeft(StringLeft($aFILES[$i], StringInStr($aFILES[$i],"\",0,-1)-1 ), 2 )
    If StringRight($TARGET, 1) = "\" Then $TARGET = StringTrimRight($TARGET, 1)
    FileWrite($FH, 'ProgressSet(' & $PERCENT & ', "' & StringRight($aFILES[$i], StringLen($aFILES[$i])- StringInStr($aFILES[$i], "\",0,-1)) & '")' & @CRLF)
    If StringInStr($TARGET, "@") Then
    FileWrite($FH, 'If Not FileExists(' & $TARGET & ' & ' & '"' & $DIERECTORIES & '") Then' & @CRLF)
    FileWrite($FH, @TAB & 'If DirCreate(' & $TARGET & ' & ' & '"' & $DIERECTORIES & '") = 1 Then' & @CRLF)
    FileWrite($FH, @TAB & @TAB & '_FileWriteLog(' & $TARGET & ' & ' & '"' & $DIERECTORIES & '\ = OK")' & @CRLF)
    FileWrite($FH, @TAB & 'Else' & @CRLF)
    FileWrite($FH, @TAB & @TAB & '_FileWriteLog(' & $TARGET & ' & ' & '"' & $DIERECTORIES & '\ = Fehler")' & @CRLF)
    FileWrite($FH, @TAB & @TAB & '$fehler = 1' & @CRLF)
    FileWrite($FH, @TAB & 'EndIf' & @CRLF)
    FileWrite($FH, 'EndIf' & @CRLF)
    FileWrite($FH, 'If FileInstall("' & $aFILES[$i] & '", ' & $TARGET & ' & ' & '"' & StringTrimLeft($aFILES[$i],2) & '") = 1 Then' & @CRLF)
    FileWrite($FH, @TAB & '_FileWriteLog(' & $TARGET & ' & ' & '"\Install.log", "' & StringTrimLeft($aFILES[$i],2) & ' = OK")' & @CRLF)
    Else
    FileWrite($FH, 'If Not FileExists("' & $TARGET & $DIERECTORIES & '") Then' & @CRLF)
    FileWrite($FH, @TAB & 'If DirCreate("' & $TARGET & $DIERECTORIES & '") = 1 Then' & @CRLF)
    FileWrite($FH, @TAB & @TAB & '_FileWriteLog("' & $TARGET & $DIERECTORIES & '\ = OK")' & @CRLF)
    FileWrite($FH, @TAB & 'Else' & @CRLF)
    FileWrite($FH, @TAB & @TAB & '_FileWriteLog("' & $TARGET & $DIERECTORIES & '\ = Fehler")' & @CRLF)
    FileWrite($FH, @TAB & @TAB & '$fehler = 1' & @CRLF)
    FileWrite($FH, @TAB & 'EndIf' & @CRLF)
    FileWrite($FH, 'EndIf' & @CRLF)
    FileWrite($FH, 'If FileInstall("' & $aFILES[$i] & '", "' & $TARGET & StringTrimLeft($aFILES[$i],2) & '") = 1 Then' & @CRLF)
    FileWrite($FH, @TAB & '_FileWriteLog("' & $TARGET & '\Install.log", "' & StringTrimLeft($aFILES[$i],2) & ' = OK")' & @CRLF)
    EndIf
    FileWrite($FH, 'Else' & @CRLF)
    If StringInStr($TARGET, "@") Then
    FileWrite($FH, @TAB & '_FileWriteLog(' & $TARGET & ' & ' & '"\Install.log", "' & StringTrimLeft($aFILES[$i],2) & ' = Fehler")' & @CRLF)
    Else
    FileWrite($FH, @TAB & '_FileWriteLog("' & $TARGET & '\Install.log", "' & StringTrimLeft($aFILES[$i],2) & ' = Fehler")' & @CRLF)
    EndIf
    FileWrite($FH, @TAB & '$fehler = 1' & @CRLF)
    FileWrite($FH, 'EndIf' & @CRLF)
    Next
    #cs
    FileWrite($FH, 'If $fehler = 1 Then' & @CRLF)
    If StringInStr($TARGET, "@") Then
    FileWrite($FH, @TAB & 'ProgressSet( 100, "s. ' & $TARGET & ' & ' & '\Install.log", "Installation fehlerhaft!")' & @CRLF)
    Else
    FileWrite($FH, @TAB & 'ProgressSet( 100, "s. ' & $TARGET & '\Install.log", "Installation fehlerhaft!")' & @CRLF)
    EndIf
    FileWrite($FH, 'Else' & @CRLF)
    FileWrite($FH, @TAB & 'ProgressSet( 100, "Beendet", "Installation erfolgreich!")' & @CRLF)
    FileWrite($FH, 'EndIf' & @CRLF)
    FileWrite($FH, 'Sleep(3000)' & @CRLF)
    FileWrite($FH, 'ProgressOff()' & @CRLF)
    #ce
    Case ($S_BAR = -1) And ($LOG <> -1) ; mit Statusbar, ohne Log/Fehlercheck
    For $i = 1 To $aFILES[0]
    $PERCENT = Round(100/$aFILES[0]*$i)
    $DIERECTORIES = StringTrimLeft(StringLeft($aFILES[$i], StringInStr($aFILES[$i],"\",0,-1)-1 ), 2 )
    If StringRight($TARGET, 1) = "\" Then $TARGET = StringTrimRight($TARGET, 1)
    FileWrite($FH, 'ProgressSet(' & $PERCENT & ', "' & StringRight($aFILES[$i], StringLen($aFILES[$i])- StringInStr($aFILES[$i], "\",0,-1)) & '")' & @CRLF)
    If StringInStr($TARGET, "@") Then
    FileWrite($FH, 'If Not FileExists(' & $TARGET & ' & ' & '"' & $DIERECTORIES & '") Then' & @CRLF)
    FileWrite($FH, @TAB & 'DirCreate(' & $TARGET & ' & ' & '"' & $DIERECTORIES & '")' & @CRLF)
    FileWrite($FH, 'EndIf' & @CRLF)
    FileWrite($FH, 'FileInstall("' & $aFILES[$i] & '", ' & $TARGET & ' & ' & '"' & StringTrimLeft($aFILES[$i],2) & '")' & @CRLF)
    Else
    FileWrite($FH, 'If Not FileExists("' & $TARGET & $DIERECTORIES & '") Then' & @CRLF)
    FileWrite($FH, @TAB & 'DirCreate("' & $TARGET & $DIERECTORIES & '")' & @CRLF)
    FileWrite($FH, 'EndIf' & @CRLF)
    FileWrite($FH, 'FileInstall("' & $aFILES[$i] & '", "' & $TARGET & StringTrimLeft($aFILES[$i],2) & '")' & @CRLF)
    EndIf
    Next
    #cs
    FileWrite($FH, 'ProgressSet( 100, "", "Installation abgeschlossen!")' & @CRLF)
    FileWrite($FH, 'Sleep(3000)' & @CRLF)
    FileWrite($FH, 'ProgressOff()' & @CRLF)
    #ce
    Case ($S_BAR <> -1) And ($LOG = -1) ; ohne Statusbar, mit Log/Fehlercheck
    For $i = 1 To $aFILES[0]
    $DIERECTORIES = StringTrimLeft(StringLeft($aFILES[$i], StringInStr($aFILES[$i],"\",0,-1)-1 ), 2 )
    If StringRight($TARGET, 1) = "\" Then $TARGET = StringTrimRight($TARGET, 1)
    If StringInStr($TARGET, "@") Then
    FileWrite($FH, 'If Not FileExists(' & $TARGET & ' & ' & '"' & $DIERECTORIES & '") Then' & @CRLF)
    FileWrite($FH, @TAB & 'If DirCreate(' & $TARGET & ' & ' & '"' & $DIERECTORIES & '") = 1 Then' & @CRLF)
    FileWrite($FH, @TAB & @TAB & '_FileWriteLog(' & $TARGET & ' & ' & '"' & $DIERECTORIES & '\ = OK")' & @CRLF)
    FileWrite($FH, @TAB & 'Else' & @CRLF)
    FileWrite($FH, @TAB & @TAB & '_FileWriteLog(' & $TARGET & ' & ' & '"' & $DIERECTORIES & '\ = Fehler")' & @CRLF)
    FileWrite($FH, @TAB & @TAB & '$fehler = 1' & @CRLF)
    FileWrite($FH, @TAB & 'EndIf' & @CRLF)
    FileWrite($FH, 'EndIf' & @CRLF)
    FileWrite($FH, 'If FileInstall("' & $aFILES[$i] & '", ' & $TARGET & ' & ' & '"' & StringTrimLeft($aFILES[$i],2) & '") = 1 Then' & @CRLF)
    FileWrite($FH, @TAB & '_FileWriteLog(' & $TARGET & ' & ' & '"\Install.log", "' & StringTrimLeft($aFILES[$i],2) & ' = OK")' & @CRLF)
    Else
    FileWrite($FH, 'If Not FileExists("' & $TARGET & $DIERECTORIES & '") Then' & @CRLF)
    FileWrite($FH, @TAB & 'If DirCreate("' & $TARGET & $DIERECTORIES & '") = 1 Then' & @CRLF)
    FileWrite($FH, @TAB & @TAB & '_FileWriteLog("' & $TARGET & $DIERECTORIES & '\ = OK")' & @CRLF)
    FileWrite($FH, @TAB & 'Else' & @CRLF)
    FileWrite($FH, @TAB & @TAB & '_FileWriteLog("' & $TARGET & $DIERECTORIES & '\ = Fehler")' & @CRLF)
    FileWrite($FH, @TAB & @TAB & '$fehler = 1' & @CRLF)
    FileWrite($FH, @TAB & 'EndIf' & @CRLF)
    FileWrite($FH, 'If FileInstall("' & $aFILES[$i] & '", "' & $TARGET & StringTrimLeft($aFILES[$i],2) & '") = 1 Then' & @CRLF)
    FileWrite($FH, @TAB & '_FileWriteLog("' & $TARGET & '\Install.log", "' & StringTrimLeft($aFILES[$i],2) & ' = OK")' & @CRLF)
    EndIf
    FileWrite($FH, 'Else' & @CRLF)
    If StringInStr($TARGET, "@") Then
    FileWrite($FH, @TAB & '_FileWriteLog(' & $TARGET & ' & ' & '"\Install.log", "' & StringTrimLeft($aFILES[$i],2) & ' = Fehler")' & @CRLF)
    Else
    FileWrite($FH, @TAB & '_FileWriteLog("' & $TARGET & '\Install.log", "' & StringTrimLeft($aFILES[$i],2) & ' = Fehler")' & @CRLF)
    EndIf
    FileWrite($FH, @TAB & '$fehler = 1' & @CRLF)
    FileWrite($FH, 'EndIf' & @CRLF)
    Next
    Case ($S_BAR <> -1) And ($LOG <> -1) ; ohne Statusbar, ohne Log/Fehlercheck
    For $i = 1 To $aFILES[0]
    $DIERECTORIES = StringTrimLeft(StringLeft($aFILES[$i], StringInStr($aFILES[$i],"\",0,-1)-1 ), 2 )
    If StringRight($TARGET, 1) = "\" Then $TARGET = StringTrimRight($TARGET, 1)
    If StringInStr($TARGET, "@") Then
    FileWrite($FH, 'If Not FileExists(' & $TARGET & ' & ' & '"' & $DIERECTORIES & '") Then' & @CRLF)
    FileWrite($FH, @TAB & 'DirCreate(' & $TARGET & ' & ' & '"' & $DIERECTORIES & '")' & @CRLF)
    FileWrite($FH, 'EndIf' & @CRLF)
    FileWrite($FH, 'FileInstall("' & $aFILES[$i] & '", ' & $TARGET & ' & ' & '"' & StringTrimLeft($aFILES[$i],2) & '")' & @CRLF)
    Else
    FileWrite($FH, 'If Not FileExists("' & $TARGET & $DIERECTORIES & '") Then' & @CRLF)
    FileWrite($FH, @TAB & 'DirCreate("' & $TARGET & $DIERECTORIES & '")' & @CRLF)
    FileWrite($FH, 'EndIf' & @CRLF)
    FileWrite($FH, 'FileInstall("' & $aFILES[$i] & '", "' & $TARGET & StringTrimLeft($aFILES[$i],2) & '")' & @CRLF)
    EndIf
    Next
    EndSelect
    FileClose($FH)
    EndFunc ;==>_WriteInstall

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

    ;********************************************************************************
    ; AutoIt Version: 3.0
    ; Language: English
    ; Platform: Win9x/NT/XP
    ; Author: jos van der Zande
    ;
    ; Find files in directory and subdirectories and return it in an Array, all coded in Autoit3
    ;
    ; _GetFileList($DIR, $FILEMASK, 1) ; _GetFileList($DIR, $FILEMASK [, Flag]) Flag GetFile(Default) = 0 , GetDirOnly = 1
    ;********************************************************************************
    ;Recursive search for filemask
    ;********************************************************************************

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

    Func _GetFileList($T_DIR,$T_MASK,$DIR_ONLY=0)
    Dim $N_DIRNAMES[200000] ; max number of directories that can be scanned
    Local $N_DIRCOUNT = 0
    Local $N_FILE
    Local $N_SEARCH
    Local $N_TFILE
    Local $N_OFILE
    Local $T_FILENAMES
    Local $T_FILECOUNT
    Local $T_DIRCOUNT = 1
    Local $FILEMASK
    ; check Filemask \ for empty File-Array by GetDirOnly
    If $FILEMASK = "n" Then $FILEMASK = "*.no"
    ; remove the end \ If specified
    If StringRight($T_DIR,1) = "\" Then $T_DIR = StringTrimRight($T_DIR,1)
    $N_DIRNAMES[$T_DIRCOUNT] = $T_DIR
    ; Exit if base dir doesn't exists
    If Not FileExists($T_DIR) Then Return 0
    ; keep on looping until all directories are scanned
    While $T_DIRCOUNT > $N_DIRCOUNT
    $N_DIRCOUNT = $N_DIRCOUNT + 1
    ; find all subdirs in this directory and save them in a array
    $N_SEARCH = FileFindFirstFile($N_DIRNAMES[$N_DIRCOUNT] & "\*.*")
    While 1
    $N_FILE = FileFindNextFile($N_SEARCH)
    If @error Then ExitLoop
    ; skip these references
    If $N_FILE = "." Or $N_FILE = ".." Then ContinueLoop
    $N_TFILE = $N_DIRNAMES[$N_DIRCOUNT] & "\" & $N_FILE
    ; if Directory than add to the list of directories to be processed
    If StringInStr(FileGetAttrib( $N_TFILE ),"D") > 0 Then
    $T_DIRCOUNT = $T_DIRCOUNT + 1
    $N_DIRNAMES[$T_DIRCOUNT] = $N_TFILE
    EndIf
    Wend
    FileClose($N_SEARCH) ; find all Files that mtach the MASK
    $N_SEARCH = FileFindFirstFile($N_DIRNAMES[$N_DIRCOUNT] & "\" & $T_MASK )
    If $N_SEARCH = -1 Then ContinueLoop
    While 1
    $N_FILE = FileFindNextFile($N_SEARCH)
    If @error Then ExitLoop
    ; skip these references
    If $N_FILE = "." Or $N_FILE = ".." Then ContinueLoop
    $N_TFILE = $N_DIRNAMES[$N_DIRCOUNT] & "\" & $N_FILE
    ; if Directory than add to the list of directories to be processed
    If StringInStr(FileGetAttrib( $N_TFILE ),"D") = 0 Then
    $T_FILENAMES = $T_FILENAMES & $N_TFILE & @CR
    $T_FILECOUNT = $T_FILECOUNT + 1
    ;MsgBox(0,'filecount ' & $T_FILECOUNT ,$N_TFILE)
    EndIf
    Wend
    FileClose($N_SEARCH)
    Wend
    If $DIR_ONLY = 0 Then
    $T_FILENAMES = StringTrimRight($T_FILENAMES,1)
    $N_OFILE = StringSplit($T_FILENAMES,@CR)
    Return( $N_OFILE )
    Else
    ReDim $N_DIRNAMES[$N_DIRCOUNT+1]
    $N_DIRNAMES[0] = $N_DIRCOUNT
    Return $N_DIRNAMES
    EndIf
    EndFunc ;==>_GetFileList

    [/autoit]

    milko
    Ja, das Script hat korrekt gearbeitet.
    Ist mir auch erst etwas später klar geworden - 'FileInstall( )' kann nur auf bereits existierende Ordner angewendet werden.
    Daher jetzt hier die Möglichkeit zum Nacheditieren in der GUI.

    Oops, lese jetzt grad, dass du die Zielverzeichnisse per Hand erstellt hattest.
    Hab ich jetzt keine Erklärung dafür. Meine Testinstallationen sind gelaufen. ?(

    Das steht als nächstes auf meiner ToDoList - die Zielverzeichnisstruktur automatisch erstellen.

    EDIT
    Ich kann Vollzug melden. :stolz_bin:
    Jetzt wird auch die Ordnerstruktur für das Installationsziel automatisch erstellt.

  • Edit feld auslesen

    • BugFix
    • 25. März 2007 um 10:28

    Zur Benutzung von Classname ein Bsp.:

    [autoit]

    ; INFO zu Control
    ; Title: Blabla
    ; Control ID: 354
    ; ClassNameNN: SysTabControl321

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

    ; anklicken 'normal':
    ControlClick("Blabla", "", 354)

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

    ; anklicken unter Verwendung Classname:
    AutoitSetOption("WinTitleMatchMode", 4)
    ControlClick("Blabla", "", "classname=SysTabControl321")

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

    ; WICHTIG! "classname=SysTabControl321" ==> vor und nach dem '=' KEINE Leerzeichen

    [/autoit]

    Für dein Editfeld: Poste bitte die Infos vom InfoTool.
    Es nützt nichts zu wissen, was für Infos nicht kommen. Besser ist zu sehen ob aus den vorhandenen Infos was brauchbares bei ist. ;)

Spenden

Jeder Euro hilft uns, Euch zu helfen.

Download

AutoIt Tutorial
AutoIt Buch
Onlinehilfe
AutoIt Entwickler
  1. Datenschutzerklärung
  2. Impressum
  3. Shoutbox-Archiv
Community-Software: WoltLab Suite™