#Region ;**** Directives created by AutoIt3Wrapper_GUI **** #AutoIt3Wrapper_Outfile=..\Desktop\Demo FileListRecursiv.Exe #AutoIt3Wrapper_AU3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6 #EndRegion ;**** Directives created by AutoIt3Wrapper_GUI **** #include #include #include #include #include "FTP_FileList_Recursiv.au3" #include Opt('MustDeclareVars', 1) Global $sServer='127.0.0.1', $sUser='Bert',$sPass='Test' _CreateGui() Func captureEsc() $bCancel = True ;$bCancel ist in FTP_FileList_Recursiv.au3 Global definiert, ;wenn True wird der DL nach Userbestätigung abgebrochen EndFunc Func _OnAutoItExit() HotKeySet("{Esc}") EndFunc Func _CreateGui() Local $l_InternetSession = -99, $l_FTPSession Local $errOpen, $errFTP Local $nMsg Local $iMaxDepth ;maximale Vereichnisebenen <1=unendliche Rekrusionstiefe Local $mainGui = GUICreate("Beispiel Programm zur Nutzung der FTP_FileList_Recursiv.au3", 623, 450, 271, 235) ;Local $idLblLog = GUICtrlCreateEdit("", 8, 5, 467, 315, BitOR($WS_HSCROLL, $WS_VSCROLL)) ;Local $hLog = GUICtrlGetHandle($idLblLog) Local $hLog = _GUICtrlEdit_Create($mainGui,'',8, 5, 467, 315, BitOR($WS_HSCROLL, $WS_VSCROLL, $ES_MULTILINE, $ES_WANTRETURN, $ES_READONLY)) Local $idPrgFile = GUICtrlCreateProgress(8, 344, 598, 25) Local $hGuiChild1 = GUICreate("Child1", 594, 21, 10, 346, $WS_POPUP, $WS_EX_MDICHILD, $mainGui) Local $idLblFilePer = GUICtrlCreateLabel("", 2, 2, 590, 17, $SS_CENTER) GUICtrlSetFont(-1, 11, 2800) WinSetTrans($hGuiChild1, "", 180) GUISwitch($mainGui) Local $idLblFile = GUICtrlCreateLabel("", 8, 322, 594, 17) Local $idPrgKB = GUICtrlCreateProgress(8, 392, 598, 25) Local $hGuiChild2 = GUICreate("Child2", 595, 23, 10, 394, $WS_POPUP, $WS_EX_MDICHILD, $mainGui) Local $idLblKBPer = GUICtrlCreateLabel("", 2, 1, 590, 19, $SS_CENTER) GUICtrlSetFont(-1, 11, 2800) WinSetTrans($hGuiChild2, "", 180) GUISwitch($mainGui) Local $idLblKB = GUICtrlCreateLabel("", 8, 372, 594, 17) GUICtrlCreateLabel('Rekursionstiefe"',530,5) Local $idInpMaxDepth= GUICtrlCreateInput("0",483,5,35,22,$ES_NUMBER) GUICtrlSetTip(-1,'Maxinale Rekursionstiefe,<1=unendlich') Local $idBtnConnect = GUICtrlCreateButton("&Verbinden", 483, 40) ;verbinden mit FTP-Server Local $idBtnDisconnect = GUICtrlCreateButton("&Trennen", 483, 80) ;vom Server trennen Local $idBtnDL = GUICtrlCreateButton("&Download", 483, 120) ;Download starten ;Local $idBtnInfo = GUICtrlCreateButton("&Info", 483, 265) ;Programminfo Local $idBtnExit = GUICtrlCreateButton("Be&enden", 483, 295) ;Exit GUICtrlSetState($idBtnDL, $Gui_DISABLE) GUICtrlSetState($idBtnDisconnect, $Gui_DISABLE) #Region;falls aktiviert Positionen noch anpasser und Labeltext entfernen Local $idLblColapsedTime = GUICtrlCreateLabel("", 8, 420, 400, 17) Local $idLblKBperSec = GUICtrlCreateLabel("", 450, 420, 500, 17) #EndRegion GUISetState(@SW_SHOW, $hGuiChild1) GUISetState(@SW_SHOW, $hGuiChild2) GUISetState(@SW_SHOW, $mainGui) While 1 $nMsg = GUIGetMsg() Switch $nMsg Case $Gui_EVENT_CLOSE, $idBtnExit If $l_InternetSession <> -99 Then _FTP_Close($l_InternetSession) Exit Case $idBtnConnect $l_InternetSession = _FTP_Open('AutoItZilla') ;Öffnet eine FTP Sitzung $errOpen = @error If Not @error Then _Report('Internetsitzung geöffnet',$hLog,1) $l_FTPSession = _FTP_Connect($l_InternetSession, $sServer, $sUser, $sPass, 0) ;Verbindet zu einem FTP Server $errFTP = @error If Not @error Then _Report('verbunden mit '&$sServer,$hLog,1) GUICtrlSetState($idBtnDL, $Gui_ENABLE) GUICtrlSetState($idBtnDisconnect, $Gui_ENABLE) GUICtrlSetState($idBtnConnect, $Gui_DISABLE) Else _Report('Verbindung mit '&$sServer & ' fehlgeschlagen: '& $errFTP,$hLog,1) EndIf Else _Report('öffnen der Internetsitzung fehlgeschlagen: ' & $errOpen,$hLog, 1) EndIf Case $idBtnDisconnect _FTP_Close($l_FTPSession) _Report('Ftpsitzung geschlossen',$hLog,1) _FTP_Close($l_InternetSession) _Report('Internetsitzung geschlossen',$hLog,1) $l_InternetSession = -99 GUICtrlSetState($idBtnDL, $Gui_DISABLE) GUICtrlSetState($idBtnDisconnect, $Gui_DISABLE) GUICtrlSetState($idBtnConnect, $Gui_ENABLE) Case $idBtnDL $iMaxDepth=Int(GUICtrlRead($idInpMaxDepth)) GUICtrlSetState($idBtnDL, $Gui_DISABLE) GUICtrlSetState($idBtnExit, $Gui_DISABLE) GUICtrlSetState($idBtnDisconnect, $Gui_DISABLE) GUICtrlSetData($idPrgFile,'') GUICtrlSetData($idPrgKB,'') GUICtrlSetData($idLblFile,'') GUICtrlSetData($idLblKB,'') GUICtrlSetData($idLblFilePer,'') GUICtrlSetData($idLblKBPer,'') GUICtrlSetData($idLblColapsedTime,'') GUICtrlSetData($idLblKBperSec,'') HotKeySet("{Esc}", "captureEsc") ;definiert ESCape-Taste für Abbruch der DL's _getAllFTPFilesRekursiv($l_FTPSession, '/', @ScriptDir & "\Temp", $iMaxDepth, 0, $idPrgKB, $idLblKB, $idLblKBPer, $idPrgFile, $idLblFile, $idLblFilePer, $idLblColapsedTime, $idLblKBperSec, $hLog, $mainGui) ;<======= anpassen Remotepfad der inkl. aller Unerordner heruntergeladen werden soll ;_getAllFTPFilesRekursiv($l_FTPSession, $sRemote = "", $sLocal = @TempDir, $iMaxDepth , $iDebug, $idPrgKB, $idLblKB, $idLblKBPer, $idPrgFile, $idLblFile, $idLblFilePer, $idLblColapsed = 0, $idLblKBperSec, $idLblLog) HotKeySet("{Esc}") if Not ($bCancel Or $bReturn) Then _Report('Download abgeschlossen',$hLog,1) Else _Report('Abbruch durch Benutzer',$hLog,1) EndIf _FTP_Close($l_FTPSession) _Report('Ftpsitzung geschlossen',$hLog,1) _FTP_Close($l_InternetSession) _Report('Internetsitzung geschlossen',$hLog,1) GUICtrlSetState($idBtnConnect, $Gui_ENABLE) ;Das Schliessen der Verbindung ist leider notwendig, da ansonsten der Progress in KB nicht funktioniert ; GUICtrlSetState($idBtnDL, $Gui_ENABLE) ; GUICtrlSetState($idBtnExit, $Gui_ENABLE) ; GUICtrlSetState($idBtnDisconnect, $Gui_ENABLE) EndSwitch WEnd EndFunc ;==>_CreateGui