110 x 110 pixel (BildInfo)
oder was willst du wissen?
Beiträge von BugFix
-
-
Keine weiteren Infos mit AutoIt Window Info - Tool ?
- Programmname "xyz.exe" läuft
- Fenster existiert und ist aktiv/inaktiv
- welches Control soll betätigt werden -
Zitat
Dürfte ich erfahren, warum du die Übernahme in die Zwischenablage nicht mit der Funktion "GUICtrlCreateContextMenu" realisiert hast. Dann hättest du auch die Probleme mit der Farbe nicht gehabt (ich habe es gerade bei mir ausprobiert).
Ja, du darfst.
1. Weil der Mensch ein Gewohnheitstier und grundsätzlich faul ist.
Ich hatte in einer anderen Anwendung ein ähnliches Kontextmenü bereits verwendet - hab es jetzt nur etwas angepaßt.
2. Das Standard-Kontextmenü kann ich nicht (ohne weiteres) so gestalten, wie mein jetziges (Label mit Farbanzeige, Hintergrundfarbe)EDIT
Noch eine optische Korrektur. Wenn ihr Gridlines angezeigt haben möchtet, muß die ListView Definition, wie folgt aussehen:
[autoit]$ListView1 = GUICtrlCreateListView("Farbe|Name|HEX-Code", 0, 40, 420, 642, $LVS_SINGLESEL)
[/autoit]
_GUICtrlListViewSetColumnWidth(-1, 0, 135)
_GUICtrlListViewSetColumnWidth(-1, 1, 135)
_GUICtrlListViewSetColumnWidth(-1, 2, 128)
GUICtrlSendMsg($ListView1, $LVM_SETEXTENDEDLISTVIEWSTYLE, $LVS_EX_GRIDLINES, $LVS_EX_GRIDLINES)Ist aber Geschmackssache.
-
Ja, danke snoozer.
Das ist der korrekte Weg. Der Teufel steckt,wie üblich, im Detail.
Bitte auch in der Esc-Funktion ergänzen:
Spoiler anzeigen
[autoit]Func bCopyToClick()
[/autoit]
$strCopy = '$' & $col & " = " & $hex
ClipPut($strCopy)
GUISetState(@SW_HIDE, $GUICopy)
ToolTip("Es wurde:" & @CRLF & @CRLF & @TAB & $strCopy & @CRLF & @CRLF & "in die Zwischenablage kopiert.", @DesktopWidth/2, @DesktopHeight/2, "Zwischenablage", 1, 1)
Sleep(5000)
ToolTip("")
GUISetState(@SW_RESTORE,$Form1)
EndFunc
Func bEscCopyToClick()
GUISetState(@SW_HIDE, $GUICopy)
GUISetState(@SW_RESTORE,$Form1)
EndFunc -
Hi,
ich habe
hier meine HEX-Code Tabelle eingestellt.
Dabei besteht noch folgendes Problem:
Die Liste kann in drei verschiedenen Sortierfolgen angezeigt werden. Da kann ich auch beliebig zwischen wechseln - funktioniert.
Wurde aber das Ereignis "$GUI_EVENT_SECONDARYDOWN" ausgewertet (Kontextmenü zum Kopieren) und ich will anschließend erneut eine andere Sortierung wählen, wird zwar die richtige Reihenfolge aufgelistet aber die Befehle für Setzen der Hintergrund- und Fontfarbe der Items werden nicht ausgeführt.Spoiler anzeigen
[autoit];.....
[/autoit] [autoit][/autoit] [autoit]
Dim $arColors[140][5] ; 0=Name, 1=Hex, 2=Sortier-Index Sättigung/Farbton, 3=Sortier-Index Helligkeit, 4= wenn 1 Schrift weiß
;.....
$Form1 = GUICreate("HEX-Code Farbtabelle", 415, 683, -1, -1)
GUISetOnEvent($GUI_EVENT_CLOSE, "AForm1Close")
GUISetOnEvent($GUI_EVENT_SECONDARYDOWN, "SpecialEvents")
;.....
Func rNameClick()
_GUICtrlListViewDeleteAllItems($ListView1)
_SetData(0)
EndFuncFunc rSattClick()
[/autoit] [autoit][/autoit] [autoit]
_GUICtrlListViewDeleteAllItems($ListView1)
_SetData(2)
EndFuncFunc rHellClick()
[/autoit] [autoit][/autoit] [autoit]
_GUICtrlListViewDeleteAllItems($ListView1)
_SetData(3)
EndFuncFunc _SetData($SortIndx)
[/autoit]
_ArraySort($arColors, 0, 0, 0, 5, $SortIndx)
For $i = 0 To UBound($arColors)-1
$arItem[$i] = GUICtrlCreateListViewItem( "|" &$arColors[$i][0] & "|0x" & Hex($arColors[$i][1],6), $ListView1)
If $arColors[$i][4] = 1 Then GUICtrlSetColor(-1, 0xFFFFFF)
GUICtrlSetBkColor(-1,$arColors[$i][1])
Next
EndFunc
;.....
Func SpecialEvents()
If @GUI_CTRLID = $GUI_EVENT_SECONDARYDOWN Then
If ControlGetFocus($Form1, "HEX-Code Color Table") = "SysListView321" Then
$ind = _GUICtrlListViewGetCurSel($ListView1)
$col = _GUICtrlListViewGetItemText($ListView1, $ind, 1)
$hex = _GUICtrlListViewGetItemText($ListView1, $ind, 2)
If $arColors[$ind][4] = 1 Then
GUISetBkColor($PaleGreen, $GUICopy)
GUICtrlSetColor($lbShowColor, 0xFFFFFF)
Else
GUISetBkColor($Navy, $GUICopy)
GUICtrlSetColor($lbShowColor, 0x000000)
EndIf
GUICtrlSetBkColor($lbShowColor, $arColors[$ind][1])
GUICtrlSetData($lbShowColor, $arColors[$ind][0])
GUISetState(@SW_SHOW, $GUICopy)
EndIf
EndIf
EndFunc
;.....
:hm:EDIT
So, hab nun auch versucht mit "WM_NOTIFY event handler" über SingleClick, DoubleClick oder RightClick auszuwerten.
Es ist völlig Banane, welches Ereignis ich auswerte - hinterher funktioniert die Farbsetzung nicht mehr. :weinen:EDIT2
Ha, ich habs gefunden.
Ist zwar für mich nicht erklärbar warum es so ist, aber hier liegt der Fehler:$arItem[$i] = GUICtrlCreateListViewItem( "|" &$arColors[$i][0] & "|0x" & Hex($arColors[$i][1],6), $ListView1)
If $arColors[$i][4] = 1 Then GUICtrlSetColor(-1, 0xFFFFFF)
GUICtrlSetBkColor(-1,$arColors[$i][1])Mit -1 beziehe ich mich auf das zuvor erstellte ListViewItem.
Aber das versagt nach einem Event. Setze ich dafür $arItem[$i] ein, dann funktioniert es! -
Hi,
da heute meine Lieblingswebsite mit Farbcodes down war, habe ich mir jetzt selbst eine Tabelle erstellt.
Farbe in der Liste markieren, per Rechtsklick Kontextmenü aufrufen. Es wird dann der String "$farbname = hexcode" in die Zwischenablage kopiert.EDIT
Ich hab die Tabelle noch etwas umgestaltet, die Farben werden jetzt wahlweise sortiert nach:
- Name
- Sättigung oder
- HelligkeitDas vereinfacht etwas die Auswahl.
EDIT 14.01.08
Der Code ist jetzt der AutoIt-Version 3.2.10.0 angepaßt.
Edit 10.07.2008
Anpassung an Version 3.2.12.0 erfolgt.Edit 11.07.2008
Habe Oscars Anregung aufgegriffen (wegen Flackern).
RGB wird mit angezeigt.
Außerdem meinen Farbmixer, den ich in einem anderen Programm hatte, mit integriert. Dieser hat auch einen ColorPicker, heißt hierdrin: Snap Color.Edit 13.07.2008
Jetzt ist auch ein ordentliches "Zielkreuz" vorhanden um eine Farbe aus irgendeinem Fenster aufzugreifen. -
Noch was schönes: Das Script_Center
Sieht aus, wie die AutoIt-Hilfe. Thema anklicken und das fertige (WMI)-Script steht zur Verfügung. Da braucht man nicht erst suchen, was ich denn mit welcher Methode machen kann.
EDIT
Hab noch ein Tool gefunden, vergleichbar mit WMICreator: Scriptomatic 2.0 .
Welches Tool man verwendet ist sicher Geschmackssache, aber lest mal die ReadMe bei Scriptomatic. Ein echter Brüller.
EDIT2
Manchmal kann man sich nur selber prügeln :hammer:
Ich habe grad in Scriptomatic noch eine Sektion für AutoIt eingebunden (funzt auch prima). Die Arbeit hätte ich mir sparen können - Es gibt auch eine AutoIt-Version davon.
Den Link hatte übrigens ytwinky schon mal eingestellt.
Also hier die direkte Umsetzung für und mit AutoIt: AutoIt Script-o-matic von Jon -
So gehts, du mußt das Tab neu erstellen:
[autoit]
[/autoit]
While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $GUI_EVENT_CLOSE
Exit
Case $Button1
GUICtrlDelete($Avi1)
GUICtrlDelete($TabSheet2)
$TabSheet2 = GUICtrlCreateTabItem("Tab 2")
$Avi1 = GUICtrlCreateAvi("shell32.dll", 170, 16, 36, 272, 60, BitOR($ACS_TRANSPARENT,$ACS_AUTOPLAY))
EndSwitch
WEnd -
Hi,
nach langem Zögern habe ich mich nun doch mal überwunden und mich etwas intensiver mit der Nutzung von Objekten unter AutoIt befasst.
Und ich war angenehm überrascht, wie simpel damit etliche Probleme zu lösen sind. Der große Vorteil auch für alle jene, die bisher recht wenig mit Objekten-Klassen-Methoden am Hut haben: MS bietet mit dem Gratistool "WMI Code Generator" eine top Unterstützung. Man kann damit den WMI-Code generieren und dann fast 1:1 in AutoIt umsetzen.Mal ein Bsp., Überwachen ob "Notepad.exe" gestartet wird und dann eine Meldung ausgeben:
WMI Code
Code
Alles anzeigenstrComputer = "." Set objSWbemServices = GetObject("winmgmts:" & _ "{impersonationLevel=impersonate}!" & _ "\\" & strComputer & "\root\cimv2") Set objEventSource = objSWbemServices.ExecNotificationQuery( _ "SELECT * FROM __InstanceCreationEvent " & _ "WITHIN 10 " & _ "WHERE TargetInstance " & _ "ISA 'Win32_Process' " & _ "AND TargetInstance.Name = 'notepad.exe'") Set objEventObject = objEventSource.NextEvent() Wscript.Echo "Notepad.exe wurde soeben gestartet."
[autoit]
und dasselbe in AutoIt
[/autoit]
$strComputer = "."
$objSWbemServices = ObjGet("winmgmts:" & _
"{impersonationLevel=impersonate}!" & _
"\\" & $strComputer & "\root\cimv2")
$objEventSource = $objSWbemServices.ExecNotificationQuery( _
"SELECT * FROM __InstanceCreationEvent " & _
"WITHIN 10 " & _
"WHERE TargetInstance " & _
"ISA 'Win32_Process' " & _
"AND TargetInstance.Name = 'Notepad.exe'")
$objEventObject = $objEventSource.NextEvent()
MsgBox(0, '', "Notepad wurde soeben gestartet.")Der WMICodeCreator listet alle auf dem PC zu findenden Klassen auf, mit den zur Verfügung stehenden Eigenschaften. Ein Mausklick und der Code ist generiert. Und mit wenigen Änderungen ist er dann in AutoIt verfügbar.
Der Vorteil, den ich hier sehe ist, dass man somit wesentlich tiefer in die Systemereignisse "eintauchen" kann bzw. einige Aufgaben sich einfacher lösen lassen als mit anderen AutoIt-Mitteln.
Ich bin mal so frei und häng den WMICodeCreator mit an - das erspart euch den GenuineCheck.
Übrigens - das Proggi bedarf keiner Installation. Entpacken und ausführen. -
Dann löse es mit Shell-Object:
[autoit]$oShell = ObjCreate("shell.application") ; Explorer als Shell-Object
[/autoit]
$oShellWindows = $oShell.windows ; Auflistung aller offenen Shell-Windows
If Isobj($oShellWindows) Then
$string = ""
For $Window In $oShellWindows
$String &= $Window.LocationName & @CRLF
Next
Msgbox(0,"Shell Windows","Es existieren folgende Explorer-Fenster:" & @CRLF & @CRLF & $String)
Endif
Exit -
Hallo,
ich möchte für ein Editcontrol ein eigenes Kontextmenü erstellen - soweit auch kein Problem.
Leider hat das Editcontrol standardmäßig ein Kontextmenü:
[Blockierte Grafik: http://img-up.net/img/EditKontex-gPq.PNG]Weiß jemand, wie ich das deaktivieren kann?
EDIT
OK, geht leider nicht. *traurig-bin*
-
WinGetClassList ( "title" [, "text"] )
-
Nutze doch das Flag STDOUT der Funktion Run und lies die Rückgabewerte mit StdoutRead() aus.
Bsp. ungetestetSpoiler anzeigen
[autoit]#include <Constants.au3>
[/autoit] [autoit][/autoit] [autoit]$foo = Run(@ComSpec & ' /C rar e "' & $TYP1 & '" "' & $sel2_folder & '" "' & $sel_folder & '"', @SystemDir, @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
[/autoit] [autoit][/autoit] [autoit]While 1
[/autoit] [autoit][/autoit] [autoit]
$line = StdoutRead($foo)
If @error Then ExitLoop
MsgBox(0, "STDOUT read:", $line)
WendWhile 1
[/autoit]
$line = StderrRead($foo)
If @error Then ExitLoop
MsgBox(0, "STDERR read:", $line)
Wend -
Geht doch problemlos, ohne dass das Label beim Erstellen sichtbar wird:
[autoit]Func _LabelCreate()
[/autoit]
$label = GUICtrlCreateLabel("LABEL", 100, 100)
GUICtrlSetState(-1,$GUI_HIDE)
EndFuncFalls du das sehen kannst bist du Supermann.

Und seit wann ist es unsaubere Programmierung, wenn ich ein Control erstelle und im nächste Schritt dessen Eigenschaften definiere ?
Dieser Logik kann ich nicht folgen. -
Wenn du deine GUI definierst kannst du doch sofort nach der Ctrl-Erstellung den Status setzen:
GUICreate()
GuiCtrlCreate....
GUICtrlSetState(-1, $GUI_HIDE)Edit Schon wieder wer schneller :weinen:
-
Hier mal ein einfaches Beispiel. Voraussetzung ist, dass hier das Array1 die fixen Werte enthält und die variablen Werte im Array2 sind.
Spoiler anzeigen
[autoit]Dim $arArray1[10], $arArray2[10], $Unterschied = ""
[/autoit] [autoit][/autoit] [autoit]$arArray1[0] = "a"
[/autoit] [autoit][/autoit] [autoit]
$arArray1[1] = "b"
$arArray1[2] = "c"
$arArray1[3] = "d"
$arArray1[4] = "e"$arArray2[0] = "a"
[/autoit] [autoit][/autoit] [autoit]
$arArray2[1] = "b"
$arArray2[2] = "c"
$arArray2[3] = "d"
$arArray2[4] = "e"
$arArray2[5] = "f"
$arArray2[6] = "g"For $i = 0 To UBound($arArray1)-1
[/autoit] [autoit][/autoit] [autoit]
If $arArray1[$i] <> $arArray2[$i] Then $Unterschied &= $arArray2[$i] & "|"
NextMsgBox(0, '', $Unterschied)
[/autoit] -
Zitat
Wie 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.
-
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_DocSorry Doc, aber dem muß wiedersprochen werden.
[autoit]
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 )@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 ).
Spoiler anzeigen
[autoit]#include <GUIConstants.au3>
[/autoit] [autoit][/autoit] [autoit]
#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)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
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
[/autoit] [autoit][/autoit] [autoit]
Sleep(100)
WEndFunc _RadioUncheck()
[/autoit] [autoit][/autoit] [autoit]
For $i = 0 To UBound($aRadio)-1
GUICtrlSetState($aRadio[$i], $GUI_UNCHECKED)
Next
EndFuncFunc _SourceTargetDisable()
[/autoit] [autoit][/autoit] [autoit]
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
EndFuncFunc _SourceTargetEnable()
[/autoit] [autoit][/autoit] [autoit]
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
EndFuncFunc _OptDisable()
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetState($grOpt, $GUI_DISABLE)
GUICtrlSetState($chStatus, $GUI_DISABLE)
GUICtrlSetState($chLog, $GUI_DISABLE)
EndFuncFunc _CodeDisable()
[/autoit] [autoit][/autoit] [autoit]
GUICtrlSetState($grCode, $GUI_DISABLE)
GUICtrlSetState($eCode, $GUI_DISABLE)
GUICtrlSetState($bOKnext, $GUI_DISABLE)
EndFuncFunc _CodeEnable()
[/autoit] [autoit][/autoit] [autoit]
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][/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; DIE FOLGENDE FUNKTION WURDE FÜR DIESEN EINSATZ ETWAS VERÄNDERT. IM ORIGINAL SIND
[/autoit] [autoit][/autoit] [autoit]
; 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
;********************************************************************************Func _GetFileList($T_DIR,$T_MASK,$DIR_ONLY=0)
[/autoit]
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 ;==>_GetFileListmilko
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
[/autoit][autoit][/autoit][autoit]
; Title: Blabla
; Control ID: 354
; ClassNameNN: SysTabControl321; anklicken 'normal':
[/autoit][autoit][/autoit][autoit]
ControlClick("Blabla", "", 354); anklicken unter Verwendung Classname:
[/autoit][autoit][/autoit][autoit]
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.