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

  • 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. ;)

  • Install-Script-Generator

    • BugFix
    • 24. März 2007 um 23:43
    Zitat

    frage mich bloss ob Autoit das richtige Install Tool ist.


    Sicher gibt es andere, bessere Tools dafür. Aber das ist ja nun mal der Reiz dabei, soviel wie möglich mit AutoIt zu realisieren. Nennen wir es sportlichen Ehrgeiz. ;)

    Hab die Funktion inzwischen noch etwas modifiziert, Statusbar und Log/Fehlercheck als Optionen.
    Änderungen im ersten Thread.

  • Zeichen aufteilen

    • BugFix
    • 24. März 2007 um 15:04

    Hier eine Variante, viel kürzer geht wohl nicht. :D

    [autoit]

    #include <array.au3>
    Dim $arOut[1]
    $arOut[0] = 0 ; nicht zwingend (für Anzahl Elemente)
    $var = "89432576"
    For $i = 1 To StringLen($var) Step 2
    _ArrayAdd($arOut, StringMid($var, $i, 2))
    $arOut[0] += 1 ; nicht zwingend (Anzahl Elemente)
    Next
    _ArrayDisplay($arOut, "2-er Gruppen")
    Exit

    [/autoit]

    EDIT
    Funktioniert mit geradzahligem und ungeradzahligem Ausgangsstring.

  • Kaspersky service größter müll?

    • BugFix
    • 24. März 2007 um 11:40

    Bin auch der Meinung, Antivirensoftware muß man nicht haben.
    Seit meine Lizenz vor 15 Monaten abgelaufen war, habe ich keine AV-Software mehr auf dem Rechner.
    Hab sporadisch mal ab und an 'nen Online-Check gemacht ==> immer clean.
    Wenn man nicht jeden blödsinnigen Link anklickt und vor allem nicht eMails von unbekanntem Absender öffnet, ist das schon die halbe Miete.

  • Bild von snoozer

    • BugFix
    • 21. März 2007 um 21:05

    Verwende doch GIMP. Das ist absolut free und hat fast identischen Funktionsumfang wie Photoshop. Kann auch fast alle mit Photoshop erstellten Dateien verarbeiten.

    Ähhh... :rolleyes: darauf hatte Mega auch grad verwiesen, da war ich etwas zu hastig :D

  • GUICtrlSetBkColor auf Zelle in ListView

    • BugFix
    • 21. März 2007 um 20:58

    Soweit ich das verstanden habe, geht es darum eine Zelle einzufärben.
    Das ist meines Wissens nicht möglich.
    Aber die Doppel-ListView-Variante von Tam0r stellt eine denkbare, wenn auch programmtechnisch nicht sehr angenehme Variante dar.

  • Durch Shortcuts eine Taste mit "Dauerfeuer" belegen

    • BugFix
    • 20. März 2007 um 19:10

    Versuchs mal so (ungetestet)
    <Alt> als Spacebar

    Spoiler anzeigen
    [autoit]

    #Include <Misc.au3>

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

    HotKeySet("^e","ende") ; Funktion mit STRG+e beenden
    _AltAsSpace(50) ; in msec.(50 = 20 x pro Sekunde)

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

    Func _AltAsSpace($intervall)
    While 1
    While _IsPressed("12")
    Send("{SPACE}")
    Sleep($intervall)
    WEnd
    WEnd
    EndFunc

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

    Func ende()
    Exit
    EndFunc

    [/autoit]
  • Fehlerberichterstattung (bitte helfen ^^)

    • BugFix
    • 20. März 2007 um 18:03
    Zitat

    Ich meine die ControlID soll doch eine Nummer sein odeR?


    Das stimmt schon. Genau diese (variierende) Zahl wird an die entsprechende Variable übergeben:
    $Raumwahl = GUICtrlCreateCombo ( "Raum auswählen...", 40, 40 , 115 , 30 )

    Kannst dir den Wert ja mal anschauen: MsgBox(0, "", "ID = " & $Raumwahl) ;)

  • Install-Script-Generator

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

    Hi,
    ich hatte grade das Vergnügen über 30 Dateien mit FileInstall einzubinden. Da FileInstall für die Quelldatei keine Variablen oder Macros zuläßt, ist das eine sehr müßige Handarbeit.
    Bekanntlich ist Faulheit die größte Motivation - also habe ich mir ein Script erstellt, das die lästige Schreibarbeit übernimmt.

    Die Funktion wird aufgerufen mit den Parametern:
    - Quellpfad oder ~pfade getrennt durch "|"
    - Zielpfad
    - Name der zu erstellenden Datei

    Der oder die Pfade werden rekursiv ausgelesen. Die Pfadstruktur wird für das Installationsziel mit übernommen. - Hier kann es natürlich noch zu Diskrepanzen kommen wenn die Quellpfade stark von den Zielpfaden abweichen, aber das kann man dann zügig mit 'Suchen und Ersetzen' beheben.
    Im Installationsscript enthalten ist:
    - eine Fehlerüberprüfung für jede installierte Datei
    - alle Vorgänge werden mitgelogt
    - eine Progressbar für den Installationsfortschritt wird generiert

    EDIT
    - Log + Fehlercheck und
    - Progressbar
    jetzt optional

    EDIT2
    - Bug bei Verwendung von Macros gefixt

    Da hatte ich mir doch glatt was neues 'reingefixt' :rolleyes:
    OK, nun sollte es aber stimmen.

    EDIT3
    Nun noch der letzte Schliff:
    - Es wird jetzt auch die Verzeichnisstruktur für das Installationsziel automatisch erstellt.
    (Natürlich auch in derr GUI eingebunden)

    Hinweis: Das ganze jetzt auch in einer GUI zum editieren - siehe hier

    Spoiler anzeigen
    [autoit]

    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    ; 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] )
    ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
    #include <Array.au3>
    #include <file.au3>
    Func _WriteInstall($SOURCEPATHES, $TARGET, $FILENAME, $S_BAR=-1, $LOG=-1)
    Dim $QUELLPFADE, $aFILES[1], $FH = FileOpen($FILENAME,1), $PERCENT, $DIRECTORIES
    $aFILES[0] = 0
    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
    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
    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)
    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
    FileWrite($FH, 'ProgressSet( 100, "", "Installation abgeschlossen!")' & @CRLF)
    FileWrite($FH, 'Sleep(3000)' & @CRLF)
    FileWrite($FH, 'ProgressOff()' & @CRLF)
    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] [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]

    Dateien

    WriteInstall.au3 13,88 kB – 758 Downloads
  • _IEFormElementSetValue --> InvalidDataType

    • BugFix
    • 11. März 2007 um 13:46

    Hier die Infos zum Hinweisfenster:

    Zitat

    >>>>>>>>>>>> Window Details <<<<<<<<<<<<<
    Title: Sicherheitshinweis
    Class: #32770
    Size: X: 469 Y: 428 W: 342 H: 168

    >>>>>>>>>>> Mouse Details <<<<<<<<<<<
    Window: X: 209 Y: 142
    Cursor ID: 2

    >>>>>>>>>>> Pixel Color Under Mouse <<<<<<<<<<<
    RGB: Hex: 0xC0C0C0 Dec: 12632256

    >>>>>>>>>>> Control Under Mouse <<<<<<<<<<<
    Size: X: 170 Y: 111 W: 75 H: 23
    Control ID: 6
    ClassNameNN: Button1
    Text: &Ja
    Style: 0x50010001
    ExStyle: 0x00000004

    >>>>>>>>>>> Status Bar Text <<<<<<<<<<<


    >>>>>>>>>>> Visible Window Text <<<<<<<<<<<
    &Ja
    Sie sind im Begriff, die Verbindung auf eine nicht sichere Verbindung umzulenken.
    &Nein
    Die Daten, die an die bisherige Site gesendet wurden, werden möglicherweise ebenfalls an eine nicht sichere Site gesendet. Möchten Sie den Vorgang fortsetzen?

    Alles anzeigen

    Das Seltsame ist halt, dass bei manuellem Click auf "Login" das aufpopende Fenster von WinWait( ) erkannt wird, nicht aber bei Übertragung mit "_IEFormSubmit ($oForm)".

    EDIT

    Habs gefunden, per default wartet "_IEFormSubmit( )" bis die Seite komplett geladen ist. Das kann hier aber nur passieren, wenn vorher die Sicherheitsabfrage bestätigt wird.
    Also "_IEFormSubmit ($oForm, 0)" damit das Script weiterläuft und nun klappts auch.

  • _IEFormElementSetValue --> InvalidDataType

    • BugFix
    • 11. März 2007 um 13:17

    Ich entere nochmal meinen Thread, da sich ein anderes Problem ergeben hat.
    Nach Übermittlung der Login-Daten popt ein Hinweisfenster auf:
    [Blockierte Grafik: http://img-up.net/thumbs/hinweis36uxM.PNG]
    Darauf reagiere ich mit:

    [autoit]

    WinWait("Sicherheitshinweis")
    ControlClick("Sicherheitshinweis", "", 6)

    [/autoit]


    Das funktioniert aber nur, wenn ich das Login per Hand durchführe. Bei Einloggen mittels "_IEFormSubmit ($oForm)" erscheint auch völlig richtig das Hinweisfenster (also Login-Daten korrekt übermittelt) aber die WinWait - Funktion erkennt nicht das Hinweisfenster. Alternative Versuche mit WinWaitActive oder WinExist führen zu gleichem Ergebnis.

  • _IEFormElementSetValue --> InvalidDataType

    • BugFix
    • 11. März 2007 um 11:59

    Danke snoozer,
    mein Fehler lag hier:
    $oForm = _IEFormGetCollection ($oIE, 0) statt
    $oForm = _IEFormGetCollection ($oIE, 1)

    Dann klappt auch meine Version über Index, allerdings ist dies im Widerspruch zur Hilfe kein Null-basierter Index, sondern bei 1 beginnend:

    [autoit]

    $o_login = _IEFormElementGetCollection ($oForm, 2) ; Username ( Form ~Nr. 2, ~Name = 0 )
    $o_password = _IEFormElementGetCollection ($oForm, 3) ; Password ( Form ~Nr. 3, ~Name = 0 )

    [/autoit]


    Unklar ist mir nur, warum sich die Formen auch in der Form:
    $oEmail = _IEFormElementGetObjByName ($oForm, "email")
    ansprechen lassen, obwohl die Objektnamen mit 0 ausgelesen werden.

  • _IEFormElementSetValue --> InvalidDataType

    • BugFix
    • 11. März 2007 um 11:01

    Hi,
    folgendes Probleme:
    Ich hatte für meinen maxdome-Zugang ein Anmeldescript geschrieben, dass auch funktioniert. Nur hatte ich damals nur mit Send( ) - Befehlen gearbeitet.
    Nun wollte ich das mal sauber mit den IE.au3 - Funktionen umschreiben. Bekomme aber immer eine Fehlermeldung:

    [autoit]

    $oIE = _IECreate ("https://maxdomeservice.1und1.de/login/start/index.php")
    $oForm = _IEFormGetCollection ($oIE, 0)
    $o_login = _IEFormElementGetCollection ($oForm, 1) ; Username ( Form ~Nr. 2, ~Name = 0 )
    $o_password = _IEFormElementGetCollection ($oForm, 2) ; Password ( Form ~Nr. 3, ~Name = 0 )
    _IEFormElementSetValue ($o_login, "eine@eMail")
    _IEFormElementSetValue ($o_password, "einPasswort")
    _IEFormSubmit ($oForm)

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

    ; Fehlermeldung:
    ; --> IE.au3 Error from function _IEFormElementSetValue, $_IEStatus_InvalidDataType

    [/autoit]


    Hat vielleicht jemand eine Idee?

  • _FileReadToArray Problem

    • BugFix
    • 9. März 2007 um 23:00
    Zitat

    Wie kann man denn Bilder hochladen?


    Lad dein Bild auf einen Dienst, wie z.B. IMG-UP.
    Dort erhältst du dann den Link.

  • Auslesen von Combobox und Schleifenproblematik

    • BugFix
    • 9. März 2007 um 08:58
    [autoit]

    Opt("GUIOnEventMode", 1) ; Wechsle in den OnEvent Modus
    ;;
    ;;
    While 1

    $msg = GUIGetMsg() ; Ersetze das mit Sleep(100)

    Wend

    [/autoit]


    Schönheitskorrektur:

    OnEventMode ODER GUIGetMsg( )

    Da du dich für OnEventMode entschieden hast schmeiß GUIGetMsg( ) ganz raus. Verwirrt dich sonst nur selbst.

  • Fragen zur WinRar und Nero

    • BugFix
    • 3. März 2007 um 15:34

    Das Wechseln zwischen den Registerkarten erfolgt i.A. mit STRG+TAB (vorwärts) und mit STRG+SHIFT+TAB (rückwärts).

    Das Nero-Script hab ich mir noch nicht angeschaut ;)

  • mein erstes Projekt

    • BugFix
    • 2. März 2007 um 09:12

    Wirf auch mal 'nen Blick in unser schönes Tutorial - Link auf der Portalseite.
    Mal der Ansatz:

    Spoiler anzeigen
    [autoit]

    ; z.B. 6 Dateien zu prüfen
    Dim $arFiles[6][2] ; vergleichbar mit einer Tabelle: 6 Zeilen, 2 Spalten
    Dim $S_Path = "S:\TOP\Check_DataBase\Programme\"

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

    ; die Dateinamen eintragen
    $arFiles[0][0] = "File 1" ; Array-Index ist Null-basiert, erstes Element = Index 0
    $arFiles[1][0] = "File 2"
    ; .... usw.

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

    ; jetzt Status auf 0 setzen für alle 6 Elemente
    For $i = 0 To 5
    $arFiles[$i][1] = 0
    Next

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

    ; hier prüfst du ob vorhanden und setzt den Status 1, falls ja
    For $i = 0 To 5
    If FileExists($local_pfad & "\" & $arFiles[$i][0]) Then $arFiles[$i][1] = 1
    Next

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

    ; wenn das OK zum Kopieren gegeben ist
    For $i = 0 To 5
    If $arFiles[$i][1] = 0 Then FileCopy($S_Path & $arFiles[$i][0], $local_pfad & "\" & $arFiles[$i][0])
    Next

    [/autoit]

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™