Spoiler anzeigen
#include <GUIConstants.au3>
#include <array.au3>
#include <file.au3>
#include <Process.au3>
Opt("MustDeclareVars", 1)
[/autoit] [autoit][/autoit] [autoit]Dim $szDrive, $szDir, $szFName, $szExt, $Progress1, $Group1, $Group2, $Button1, $Pic2
Dim $StartPfad, $FileTyp, $Pic1, $Button2, $aFiles, $datei, $Datei_oE
Dim $nMsg, $Label2, $TxtDatei, $bFileExists, $Array, $i_ShowOver4000, $Label1
$TxtDatei = FileOpen("test.txt", 1)
[/autoit] [autoit][/autoit] [autoit]GUICreate("Konverter", 496, 424, 301, 346)
GUISetBkColor(0xFFFFFF)
$Pic1 = GUICtrlCreatePic("D:\firma\Bild.gif", 8, 0, 471, 123)
$Group2 = GUICtrlCreateGroup("Beschreibung", 8, 136, 481, 225)
$Button2 = GUICtrlCreateButton("Logfile", 24, 320, 65, 25, 0)
GUICtrlSetColor(-1, 0xC0C0C0)
$Label1 = GUICtrlCreateLabel("Es werden nach allen .tcd gesucht, dann werden diese nacheinander mit CAD6 geöffnet und in einem neuen Format (.dwg) gespeichert.", 16, 180, 460, 60)
GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
$Label2 = GUICtrlCreateLabel("Bitte arbeiten Sie nicht weiter, bis das Programm fertig ist.", 16, 240, 468, 73)
GUICtrlSetFont(-1, 10, 400, 0, "MS Sans Serif")
GUICtrlCreateGroup("", -99, -99, 1, 1)
$Button1 = GUICtrlCreateButton("Start", 312, 384, 137, 25, 0)
$Progress1 = GUICtrlCreateProgress(24, 384, 257, 25)
GUICtrlSetColor(-1,0xff0000)
GUISetState(@SW_SHOW)
$TxtDatei = FileOpen("test.txt", 1)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]While 1
$nMsg = GUIGetMsg()
Switch $nMsg
Case $Button1
$StartPfad = "D:\"
Func _GetFilesFolder_Rekursiv($sPath, $sExt='*', $iDir=-1, $iRetType=0, $sDelim='0')
Global $oFSO = ObjCreate('Scripting.FileSystemObject')
Global $strFiles = ''
If ($iRetType < 0) Or ($iRetType > 1) Then $iRetType = 0
If $sExt = -1 Then $sExt = '*'
If ($iDir < -1) Or ($iDir > 1) Then $iDir = -1
_ShowSubFolders($oFSO.GetFolder($sPath),$sExt,$iDir,$sDelim)
If $iRetType = 0 Then
Local $aOut
$aOut = StringSplit(StringTrimRight($strFiles, StringLen($sDelim)), $sDelim, 1)
If $aOut[1] = '' Then
ReDim $aOut[1]
$aOut[0] = 0
EndIf
Return $aOut
Else
Return StringTrimRight($strFiles, StringLen($sDelim))
EndIf
EndFunc
Func _ShowSubFolders($Folder, $Ext='*', $Dir=-1, $Delim=@CRLF)
If Not IsDeclared("strFiles") Then Global $strFiles = ''
If ($Dir = -1) Or ($Dir = 0) Then
For $file In $Folder.Files
If $Ext <> '*' Then
If StringRight($file.Name, StringLen($Ext)) = $Ext Then _
$strFiles &= $file.Path & $Delim
Else
$strFiles &= $file.Path & $Delim
EndIf
Next
EndIf
For $Subfolder In $Folder.SubFolders
If ($Dir = -1) Or ($Dir = 1) Then $strFiles &= $Subfolder.Path & '\' & $Delim
_ShowSubFolders($Subfolder, $Ext, $Dir, $Delim)
Next
EndFunc
$FileTyp = "tcd"
$aFiles = _GetFilesFolder_Rekursiv($StartPfad, $FileTyp, 0)
;$Array = _ArrayDisplay ($aFiles, "Alle Dateien mit der Endung: " & $FileTyp, $i_ShowOver4000)
For $i = 1 to _ArrayMax($aFiles)
$datei = $aFiles[$i]
$Datei_oE = StringTrimRight($datei, 3) & "dwg"
If FileExists($Datei_oE) Then
FileDelete($Datei_oE)
;MsgBox (0, "", "erste löschen")
EndIf
ProcessWaitClose ( "CAD6.exe")
Sleep(1000)
ShellExecute($datei, "", "", "open", @SW_HIDE)
; @SW_MINIMIZE
; @SW_HIDE
; @SW_MAXIMIZE
WinWait("Technobox CAD6")
sleep(2000)
Controlsend("Technobox CAD6", "", "CAD4draw1", "{F12}")
sleep(1000)
Controlsend("Zeichnung speichern unter", "", "Edit1", $Datei_oE)
sleep(1000)
WinWait("Zeichnung speichern unter")
Controlsend("Zeichnung speichern unter", "", "Edit1","{TAB}")
sleep(1000)
Controlsend("Zeichnung speichern unter", "", "ComboBox2","zdd")
sleep(1000)
Controlsend("Zeichnung speichern unter", "", "Button2","!s")
sleep(1000)
WinWait("DWG Export")
Controlsend("DWG Export", "", "Button7", "{Enter}")
$bFileExists = False
While $bFileExists = False
If FileExists($Datei_oE) Then
$bFileExists = True
FileWriteLine($TxtDatei, "000 ")
FileWriteLine($TxtDatei, "001 " & $datei)
FileWriteLine($TxtDatei, "002 " & $Datei_oE & " erstellt!")
EndIf
Sleep(1000)
WEnd
Do
Until $bFileExists = true
ProcessClose ("CAD6.exe")
Next
Case $Button2
$TxtDatei = FileOpen("test.txt", 1)
ShellExecute("test.txt")
Case $GUI_EVENT_CLOSE
Exit
EndSwitch
WEnd
Das ist mein Programm (Script). Es läuft wunderbar. Ich möchte nun nur noch ein paar Schönheitskorrekturen machen, damit ich dann ganz zufrieden bin.
Das Programm CAD6 wird ja versteckt ausgeführt. Damit ich meine schöne GUI sehe.
Nun möchte ich während das Script läuft meine GUI an verschiedenen Stellen vom Aussehen ändern.
Zum Beispiel habe ich $Label1 und $Label2, wenn das Script dann starte (wenn ich auf $Button1 drücke) soll sich der Text vom $Label1 ändern.
Von: "Es werden nach allen .tcd gesucht, dann werden diese nacheinander mit CAD6 geöffnet und in einem neuen Format (.dwg) gespeichert."
In: "aktuelle Zeichnung, die bearbeitet wird: " & $datei
+ Prozessbalken
Ich habe jetzt noch sowenig Ahnung, dass ich noch nichtmal weiß, wie ich meinen ersten Prozessbalken ($Progress1 = GUICtrlCreateProgress(24, 384, 257, 25)) machen soll. Das wär dann meine nächste Frage.
Ist mein Vorhaben überhaupt möglich? Wo bekomme ich Hilfe her? Gibt es hilfreiche Links, die mir helfen?
Im Bezug auf meinem Vorhaben finde ich nix in der Hilfedatei, an das ich mich klammern kann. Dort ist es zu "allgemein", für mein Wissen. Und/oder ich weiss nicht, wonach ich suchen soll (Befehle meine ich).
Ich hoffe, ich komm mit euren Ideen und Vorschläge weiter. Auch wenn ihr mir vielleicht nur einen Befehl an den Kopf werft. Den schlag ich dann sofort nach, bis ich weiter "heule".