ZitatWie lässt sich ein Icon in einer Spalte zentrieren?
:confused:
Trägst du statt Text, Icons in die ListViewElemente ein? ![]()
Poste mal etwas von dem Code, wo man sieht was du da mit den Icons treibst.
ZitatWie lässt sich ein Icon in einer Spalte zentrieren?
:confused:
Trägst du statt Text, Icons in die ListViewElemente ein? ![]()
Poste mal etwas von dem Code, wo man sieht was du da mit den Icons treibst.
ZitatHi,
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.
#include <Array.au3>
_ArraySearch ( $ZuDurchsuchendesArray, $Suchbegriff, $Startindex = 0, $Endindex = 0, Sensitivität = 0, SucheMitTeilweiserUebereinstimmung = False )
@Health
Beide Arrays sortieren, dann vergleichen:
Element[$i] von Array1 = Element[$i] von Array2
wenn nicht wurde was geändert.
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 ).
#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"
$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()
While 1
Sleep(100)
WEnd
Func _RadioUncheck()
For $i = 0 To UBound($aRadio)-1
GUICtrlSetState($aRadio[$i], $GUI_UNCHECKED)
Next
EndFunc
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
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
Func _OptDisable()
GUICtrlSetState($grOpt, $GUI_DISABLE)
GUICtrlSetState($chStatus, $GUI_DISABLE)
GUICtrlSetState($chLog, $GUI_DISABLE)
EndFunc
Func _CodeDisable()
GUICtrlSetState($grCode, $GUI_DISABLE)
GUICtrlSetState($eCode, $GUI_DISABLE)
GUICtrlSetState($bOKnext, $GUI_DISABLE)
EndFunc
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
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
; 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 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
;********************************************************************************
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
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.
Zur Benutzung von Classname ein Bsp.:
[autoit]; INFO zu Control
; Title: Blabla
; Control ID: 354
; ClassNameNN: SysTabControl321
; anklicken 'normal':
ControlClick("Blabla", "", 354)
; anklicken unter Verwendung Classname:
AutoitSetOption("WinTitleMatchMode", 4)
ControlClick("Blabla", "", "classname=SysTabControl321")
; 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. ![]()
Zitatfrage 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.
Hier eine Variante, viel kürzer geht wohl nicht. ![]()
#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
EDIT
Funktioniert mit geradzahligem und ungeradzahligem Ausgangsstring.
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.
Verwende doch GIMP. Das ist absolut free und hat fast identischen Funktionsumfang wie Photoshop. Kann auch fast alle mit Photoshop erstellten Dateien verarbeiten.
Ähhh...
darauf hatte Mega auch grad verwiesen, da war ich etwas zu hastig ![]()
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.
Versuchs mal so (ungetestet)
<Alt> als Spacebar
#Include <Misc.au3>
[/autoit] [autoit][/autoit] [autoit]HotKeySet("^e","ende") ; Funktion mit STRG+e beenden
_AltAsSpace(50) ; in msec.(50 = 20 x pro Sekunde)
Func _AltAsSpace($intervall)
While 1
While _IsPressed("12")
Send("{SPACE}")
Sleep($intervall)
WEnd
WEnd
EndFunc
Func ende()
Exit
EndFunc
ZitatIch 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) ![]()
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' ![]()
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
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
; 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 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
;********************************************************************************
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
Hier die Infos zum Hinweisfenster:
ZitatAlles anzeigen>>>>>>>>>>>> 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?
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.
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:
WinWait("Sicherheitshinweis")
ControlClick("Sicherheitshinweis", "", 6)
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.
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 )
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.
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:
$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)
; Fehlermeldung:
; --> IE.au3 Error from function _IEFormElementSetValue, $_IEStatus_InvalidDataType
Hat vielleicht jemand eine Idee?
ZitatWie kann man denn Bilder hochladen?
Lad dein Bild auf einen Dienst, wie z.B. IMG-UP.
Dort erhältst du dann den Link.
Opt("GUIOnEventMode", 1) ; Wechsle in den OnEvent Modus
;;
;;
While 1
$msg = GUIGetMsg() ; Ersetze das mit Sleep(100)
Wend
Schönheitskorrektur:
OnEventMode ODER GUIGetMsg( )
Da du dich für OnEventMode entschieden hast schmeiß GUIGetMsg( ) ganz raus. Verwirrt dich sonst nur selbst.
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 ![]()
Wirf auch mal 'nen Blick in unser schönes Tutorial - Link auf der Portalseite.
Mal der Ansatz:
; 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\"
; die Dateinamen eintragen
$arFiles[0][0] = "File 1" ; Array-Index ist Null-basiert, erstes Element = Index 0
$arFiles[1][0] = "File 2"
; .... usw.
; jetzt Status auf 0 setzen für alle 6 Elemente
For $i = 0 To 5
$arFiles[$i][1] = 0
Next
; 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
; 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