Und wie soll man dann deinen Fehler beim umsetzen des Beispiels auf dein Skript finden?
Beiträge von autoBert
-
-
Dein Skript ist nicht ausführbar:
Code
Alles anzeigen>"C:\Program Files\AutoIt3\SciTE\AutoIt3Wrapper\AutoIt3Wrapper.exe" /run /prod /ErrorStdOut /in "C:\Users\Bert\AutoIt3.My\Test\2Guisasd.au3" /UserParams +>18:27:06 Starting AutoIt3Wrapper v.14.801.2025.0 SciTE v.3.4.4.0 Keyboard:00000407 OS:WIN_81/ CPU:X64 OS:X64 Environment(Language:0407) +> SciTEDir => C:\Program Files\AutoIt3\SciTE UserDir => C:\Users\Bert\AppData\Local\AutoIt v3\SciTE\AutoIt3Wrapper SCITE_USERHOME => C:\Users\Bert\AppData\Local\AutoIt v3\SciTE +>Check for missing standard constants/udf include files: 2 include(s) were added >Running AU3Check (3.3.14.1) from:C:\Program Files\AutoIt3 input:C:\Users\Bert\AutoIt3.My\Test\2Guisasd.au3 "C:\Users\Bert\AutoIt3.My\Test\2Guisasd.au3"(25,34) : warning: $mu_online_reconnect_main: possibly used before declaration. Case $mu_online_reconnect_main ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ "C:\Users\Bert\AutoIt3.My\Test\2Guisasd.au3"(29,19) : warning: $slot_1: possibly used before declaration. Case $slot_1 ~~~~~~~~~~~~~^ "C:\Users\Bert\AutoIt3.My\Test\2Guisasd.au3"(31,19) : warning: $slot_2: possibly used before declaration. Case $slot_2 ~~~~~~~~~~~~~^ "C:\Users\Bert\AutoIt3.My\Test\2Guisasd.au3"(33,19) : warning: $slot_3: possibly used before declaration. Case $slot_3 ~~~~~~~~~~~~~^ "C:\Users\Bert\AutoIt3.My\Test\2Guisasd.au3"(35,19) : warning: $slot_4: possibly used before declaration. Case $slot_4 ~~~~~~~~~~~~~^ "C:\Users\Bert\AutoIt3.My\Test\2Guisasd.au3"(37,19) : warning: $slot_5: possibly used before declaration. Case $slot_5 ~~~~~~~~~~~~~^ "C:\Users\Bert\AutoIt3.My\Test\2Guisasd.au3"(39,19) : warning: $slot_6: possibly used before declaration. Case $slot_6 ~~~~~~~~~~~~~^ "C:\Users\Bert\AutoIt3.My\Test\2Guisasd.au3"(41,19) : warning: $slot_7: possibly used before declaration. Case $slot_7 ~~~~~~~~~~~~~^ "C:\Users\Bert\AutoIt3.My\Test\2Guisasd.au3"(43,19) : warning: $slot_8: possibly used before declaration. Case $slot_8 ~~~~~~~~~~~~~^ "C:\Users\Bert\AutoIt3.My\Test\2Guisasd.au3"(45,20) : warning: $options: possibly used before declaration. Case $options ~~~~~~~~~~~~~~^ "C:\Users\Bert\AutoIt3.My\Test\2Guisasd.au3"(25,34) : error: $mu_online_reconnect_main: undeclared global variable. Case $mu_online_reconnect_main ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^ "C:\Users\Bert\AutoIt3.My\Test\2Guisasd.au3"(29,19) : error: $slot_1: undeclared global variable. Case $slot_1 ~~~~~~~~~~~~~^ "C:\Users\Bert\AutoIt3.My\Test\2Guisasd.au3"(31,19) : error: $slot_2: undeclared global variable. Case $slot_2 ~~~~~~~~~~~~~^ "C:\Users\Bert\AutoIt3.My\Test\2Guisasd.au3"(33,19) : error: $slot_3: undeclared global variable. Case $slot_3 ~~~~~~~~~~~~~^ "C:\Users\Bert\AutoIt3.My\Test\2Guisasd.au3"(35,19) : error: $slot_4: undeclared global variable. Case $slot_4 ~~~~~~~~~~~~~^ "C:\Users\Bert\AutoIt3.My\Test\2Guisasd.au3"(37,19) : error: $slot_5: undeclared global variable. Case $slot_5 ~~~~~~~~~~~~~^ "C:\Users\Bert\AutoIt3.My\Test\2Guisasd.au3"(39,19) : error: $slot_6: undeclared global variable. Case $slot_6 ~~~~~~~~~~~~~^ "C:\Users\Bert\AutoIt3.My\Test\2Guisasd.au3"(41,19) : error: $slot_7: undeclared global variable. Case $slot_7 ~~~~~~~~~~~~~^ "C:\Users\Bert\AutoIt3.My\Test\2Guisasd.au3"(43,19) : error: $slot_8: undeclared global variable. Case $slot_8 ~~~~~~~~~~~~~^ "C:\Users\Bert\AutoIt3.My\Test\2Guisasd.au3"(45,20) : error: $options: undeclared global variable. Case $options ~~~~~~~~~~~~~~^ "C:\Users\Bert\AutoIt3.My\Test\2Guisasd.au3"(30,20) : error: _slot_1check(): undefined function. _slot_1check() ~~~~~~~~~~~~~^ "C:\Users\Bert\AutoIt3.My\Test\2Guisasd.au3"(32,20) : error: _slot_2check(): undefined function. _slot_2check() ~~~~~~~~~~~~~^ "C:\Users\Bert\AutoIt3.My\Test\2Guisasd.au3"(34,20) : error: _slot_3check(): undefined function. _slot_3check() ~~~~~~~~~~~~~^ "C:\Users\Bert\AutoIt3.My\Test\2Guisasd.au3"(36,20) : error: _slot_4check(): undefined function. _slot_4check() ~~~~~~~~~~~~~^ "C:\Users\Bert\AutoIt3.My\Test\2Guisasd.au3"(38,20) : error: _slot_5check(): undefined function. _slot_5check() ~~~~~~~~~~~~~^ "C:\Users\Bert\AutoIt3.My\Test\2Guisasd.au3"(40,20) : error: _slot_6check(): undefined function. _slot_6check() ~~~~~~~~~~~~~^ "C:\Users\Bert\AutoIt3.My\Test\2Guisasd.au3"(42,20) : error: _slot_7check(): undefined function. _slot_7check() ~~~~~~~~~~~~~^ "C:\Users\Bert\AutoIt3.My\Test\2Guisasd.au3"(44,20) : error: _slot_8check(): undefined function. _slot_8check() ~~~~~~~~~~~~~^ C:\Users\Bert\AutoIt3.My\Test\2Guisasd.au3 - 18 error(s), 10 warning(s) !>18:27:08 AU3Check ended. Press F4 to jump to next error.rc:2 +>18:27:08 AutoIt3Wrapper Finished. >Exit code: 2 Time: 2.533 -
... sondern die AV-Hersteller bieten ein standardisiertes Verfahren an, mit dem man seine fälschlich als Virus erkannten Programme einreichen kann. Im Link in meinem letzten Post wird das gut beschrieben. Man muss da nichts groß begründen, sondern nur die exe an die richtige Stelle schicken..
Stimmt geht problemlos.
In wenigen Stunden erhält man dann in der Regel die Meldung, dass es sich um einen False-Postive-Alarm gehandelt hat und diese Falschmeldung in einem der nächsten Signatur-Updates behoben wird.
Nach zwei Tagen ist Ruhe. Eigentlich ist das also keine große Sache.Stimmt nur teilweise, hat manchmal bis 10 Tage gedauert und nach einem Update meines Programmes musste ich die Prozedur wiederholen. Besonders gerne werden Programme die sich selbst updaten als Viren erkannt.
-
Der Fehler liegt in deinem Skript. Bei mir funktioniert dieses unter AutoIt 3.3.12.0:
[autoit][/autoit][autoit][/autoit][autoit]#include <FTPEx.au3>
[/autoit]
#include <Array.au3>
#include <File.au3>
$RemoteDir = "/AutoIt3.My"
$sServer = '127.0.0.1'
$sUser = 'Bert'
$sPwd = 'Test'
$sFile = @ScriptDir & "\FTP_ListToArrayEx.Txt"
If Ping($sServer) > 0 Then
$Open = _FTP_Open('FTP')
$Conn = _FTP_Connect($Open, $sServer, $sUser, $sPwd)
_FTP_DirSetCurrent($Conn, $RemoteDir)
$aFile = _FTP_ListToArrayEx($Conn, 0)
_ArrayDisplay($aFile)
_FileWriteFromArray($sFile, $aFile)
_FTP_Close($Conn)
_FTP_Close($Open)
EndIf -
Ein Blick in die Hilfe zu IniRead bringt die Aufklärung warum explizit eine Umwandlung nötig ist:
Zitat von AutoIt-Help zu IniRaedAlles anzeigenIniRead
Reads a value from a standard format .ini file.IniRead ( "filename", "section", "key", "default" )
.
.
.Return Value
Success: the requested key value as a string.
Failure: the default string if requested key not found. -
Setze Int() vor _GUICtrlListView_SetColumnWidth:
[autoit]#include <Array.au3>
[/autoit][autoit][/autoit][autoit]
#include <SQLite.au3>
#include <WindowsConstants.au3>
#include <GUIConstants.au3>
#include <GUIListView.au3>Opt("MustDeclareVars", 1)
[/autoit][autoit][/autoit][autoit]__Start()
[/autoit][autoit][/autoit][autoit]
ExitFunc __Start()
[/autoit][autoit][/autoit][autoit]Local $hDB ; Handle für die Datenbank
[/autoit][autoit][/autoit][autoit]
Local $aResult, $iRows, $iColumns
Local $sListViewText = ""
Local $idMainGUI
Local $idListView, $ListViewID
Local $aColumnWidth[0]Local $aFenstergroesse = __Fenstergroesse() ; liest die Daten für die Fenstergröße
[/autoit][autoit][/autoit][autoit]
; _ArrayDisplay($aFenstergroesse)
Local $sNameDB = 'Daten.sqlite'_SQLite_Startup()
[/autoit][autoit][/autoit][autoit]
If @error Then Return MsgBox(0, '_SQLite_Startup', '@error: ' & @error & @CRLF & '@extended: ' & @extended) * 0If FileExists($sNameDB) Then
[/autoit][autoit][/autoit][autoit]
$hDB = _SQLite_Open($sNameDB)
If @error Then Return MsgBox(0, '_SQLite_Open', '@error: ' & @error & @CRLF & '@extended: ' & @extended) * 0
Else
$hDB = _SQLite_Open($sNameDB) ; erstellt die DB
If @error Then Return MsgBox(0, '_SQLite_Open', '@error: ' & @error & @CRLF & '@extended: ' & @extended) * 0
; SQLite-Anweisung muß in einer Zeile erfolgen
_SQLite_Exec($hDB, 'CREATE TABLE Kunden (ID INTEGER PRIMARY KEY AUTOINCREMENT, Kundennummer TEXT, Firma TEXT, Name TEXT, Vorname TEXT, StrasseNr TEXT, PLZ TEXT, Ort TEXT, Telefon TEXT, EMail TEXT, Homepage TEXT, Anrede TEXT, Land TEXT);')
EndIf_SQLite_GetTable2d($hDB, 'Select * FROM Kunden; ', $aResult, $iRows, $iColumns) ; liest die Daten aus der DB
[/autoit][autoit][/autoit][autoit]
If @error Then Return MsgBox(0, '_SQLite_GetTable2d', '@error: ' & @error & @CRLF & '@extended: ' & @extended) * 0For $iC = 0 To $iColumns - 1 ; die Spaltenüberschriften
[/autoit][autoit][/autoit][autoit]
$sListViewText &= $aResult[0][$iC] & '|'
Next$idMainGUI = GUICreate('Datenbank', $aFenstergroesse[2], $aFenstergroesse[3], $aFenstergroesse[0], $aFenstergroesse[1], $WS_SIZEBOX)
[/autoit][autoit][/autoit][autoit]
$idListView = GUICtrlCreateListView($sListViewText, 0, 30, ($aFenstergroesse[2]) - 2, ($aFenstergroesse[3]) / 2)For $iR = 1 To $iRows
[/autoit][autoit][/autoit][autoit]
For $iC = 0 To $iColumns - 1
$ListViewID &= $aResult[$iR][$iC] & '|'
Next
GUICtrlCreateListViewItem($ListViewID, $idListView)
NextFor $i = 0 To $iColumns - 1 ; liest die Spaltenbreite
[/autoit][autoit][/autoit][autoit]
_ArrayAdd($aColumnWidth, IniRead(@ScriptDir & '\Daten.ini', 'Listview', $i, 70))
If @error Then MsgBox(0, '_ArrayAdd', '@error: ' & @error & @CRLF & '@extended: ' & @extended)
NextIf IsArray($aColumnWidth) Then
[/autoit][autoit][/autoit][autoit]
_ArrayDisplay($aColumnWidth) ; die gelesenen Werte stimmen
Else
MsgBox(0, '', '$aColumnWidth ist kein Array', 1)
Return 0
EndIf
; hier sollte die Spaltenbreite gesetzt werden
If Not _GUICtrlListView_SetColumnWidth($idListView, 0, int($aColumnWidth[0])) Then MsgBox(0, '_GUICtrlListView_SetColumnWidth', 'ID', 1)
ConsoleWrite(_GUICtrlListView_GetColumnWidth($idListView, 0)&@crlf)
; so geht es
; If Not _GUICtrlListView_SetColumnWidth($idListView, 0, 55) Then MsgBox(0, '_GUICtrlListView_SetColumnWidth', 'ID', 1)
GUISetState(@SW_SHOW, $idMainGUI)
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
For $i = 0 To _GUICtrlListView_GetColumnCount($idListView) - 1 ; speichert die Spaltenbreiten in der .ini
If IniWrite(@ScriptDir & '\Daten.ini', 'Listview', $i, _
_GUICtrlListView_GetColumnWidth($idListView, $i)) <> 1 Then _
MsgBox(0, 'IniWrite', 'Fehler beim Schreiben der ' & $i & ' .ten Spalte', 1)
Next
ExitLoop
EndSwitch
WEnd$aFenstergroesse = WinGetPos('Datenbank')
[/autoit][autoit][/autoit][autoit]
__FensterDatenSchreiben($aFenstergroesse) ; speichern der Fensterdaten in der .ini
GUIDelete()_SQLite_Close()
[/autoit][autoit][/autoit][autoit]
If @error Then Return MsgBox(0, '_SQLite_Close', '@error: ' & @error & @CRLF & '@extended: ' & @extended) * 0
_SQLite_Shutdown()
If @error Then Return MsgBox(0, '_SQLite_Shutdown', '@error: ' & @error & @CRLF & '@extended: ' & @extended) * 0Return 1
[/autoit][autoit][/autoit][autoit]EndFunc ;==>__Start
[/autoit][autoit][/autoit][autoit][/autoit][autoit]Func __Fenstergroesse()
[/autoit][autoit][/autoit][autoit]Local $aFenstergroesse[4]
[/autoit][autoit][/autoit][autoit]
Local $sIniDatei = @ScriptDir & '\Daten.ini'If FileExists($sIniDatei) Then
[/autoit][autoit][/autoit][autoit]
$aFenstergroesse[0] = IniRead($sIniDatei, 'Fenster', 'X', 0)
$aFenstergroesse[1] = IniRead($sIniDatei, 'Fenster', 'Y', 0)
$aFenstergroesse[2] = IniRead($sIniDatei, 'Fenster', 'Breite', -1)
$aFenstergroesse[3] = IniRead($sIniDatei, 'Fenster', 'Hoehe', -1)
Else
$aFenstergroesse[0] = -1
$aFenstergroesse[1] = -1
$aFenstergroesse[2] = 1200
$aFenstergroesse[3] = 700
EndIfReturn $aFenstergroesse
[/autoit][autoit][/autoit][autoit]EndFunc ;==>__Fenstergroesse
[/autoit][autoit][/autoit][autoit]Func __FensterDatenSchreiben($aFenstergroesse)
[/autoit][autoit][/autoit][autoit]Local $sIniDatei = @ScriptDir & '\Daten.ini'
[/autoit][autoit][/autoit][autoit]If IniWrite($sIniDatei, 'Fenster', 'X', $aFenstergroesse[0]) <> 1 Then _
[/autoit][autoit][/autoit][autoit]
Return MsgBox(0, '__FensterDatenSchreiben', 'Fehler beim Schreiben der X-Position') * 0
If IniWrite($sIniDatei, 'Fenster', 'Y', $aFenstergroesse[1]) <> 1 Then _
Return MsgBox(0, '__FensterDatenSchreiben', 'Fehler beim Schreiben der Y-Position') * 0
If IniWrite($sIniDatei, 'Fenster', 'Breite', $aFenstergroesse[2] - 14) <> 1 Then _
Return MsgBox(0, '__FensterDatenSchreiben', 'Fehler beim Schreiben der Fensterbreite') * 0
If IniWrite($sIniDatei, 'Fenster', 'Hoehe', $aFenstergroesse[3] - 14) <> 1 Then _
Return MsgBox(0, '__FensterDatenSchreiben', 'Fehler beim Schreiben der Fensterhöhe') * 0
Return 1EndFunc ;==>__FensterDatenSchreiben
[/autoit] -
Dann must du dich an die Entwickler von AutoIt wenden, damit diese IniWrite umstricken.
Da das ganze dann aber nicht mehr zu MS-Vorgaben kompatibel wäre kannst du dir die Kontaktaufnahme auch sparen.
-
Probiere das gewünschte Ergebnis durch andere GUI-Elemente nachzustellen, z.B. so:
C
Alles anzeigen#include <StaticConstants.au3> #include <GUIConstantsEx.au3> Example() Func Example() GUICreate("My GUI Tab", 250, 150); will create a dialog box that when displayed is centered GUISetBkColor(0x00E0FFFF) GUISetFont(9, 300) GUICtrlCreateGraphic(10,30,200,80,$SS_GRAYRECT) Local $idTab = GUICtrlCreateTab(10, 10, 150, 20) GUICtrlCreateTabItem("tab0") GUICtrlCreateLabel("label0", 30, 80, 50, 20) GUICtrlCreateButton("OK0", 20, 50, 50, 20) GUICtrlCreateInput("default", 80, 50, 70, 20) GUICtrlCreateTabItem("tab----1") GUICtrlCreateLabel("label1", 30, 80, 50, 20) GUICtrlCreateCombo("", 20, 50, 60, 120) GUICtrlSetData(-1, "Trids|CyberSlug|Larry|Jon|Tylo|guinness", "Jon"); default Jon GUICtrlCreateButton("OK1", 80, 50, 50, 20) GUICtrlCreateTabItem("tab2") GUICtrlSetState(-1, $GUI_SHOW); will be display first GUICtrlCreateLabel("label2", 30, 80, 50, 20) GUICtrlCreateButton("OK2", 140, 50, 50) GUICtrlCreateTabItem(""); end tabitem definition GUICtrlCreateLabel("Click on tab and see the title", 20, 130, 250, 20) GUISetState(@SW_SHOW) Local $idMsg ; Loop until the user exits. While 1 $idMsg = GUIGetMsg() If $idMsg = $GUI_EVENT_CLOSE Then ExitLoop If $idMsg = $idTab Then ; display the clicked tab WinSetTitle("My GUI Tab", "", "My GUI Tab" & GUICtrlRead($idTab)) EndIf WEnd EndFunc ;==>Exampleoder mit einem eingefärbtem Label ohne Text
-
ich glaube die IP ist falsch (ganz oben), muss doch eigentlich 127.0.0.1 heißen, also eine 0 mehr

Dann habe ich mich wohl beim Einrichten meines lokalen FTP-Servers vertan. Jedenfalls funktioniert das Skript bei mir mit dieser Adresse.
-
Hallo Com,
hier ein altes Projekt auf die aktuelle Stable (3.3.12.0) angepasst:
[autoit]#AutoIt3Wrapper_Au3Check_Parameters=-d -w 1 -w 2 -w 3 -w 4 -w 5 -w 6
[/autoit][autoit][/autoit][autoit]
#include <GUIConstantsEx.au3>
#include <StaticConstants.au3>
#include <WindowsConstants.au3>
#include <EditConstants.au3>
#include "FTP_FileList_Recursiv.au3"
#include <GuiScrollBars.au3>Opt('MustDeclareVars', 1)
[/autoit][autoit][/autoit][autoit]Global $sServer='127.0.1', $sUser='Bert',$sPass='Test'
[/autoit][autoit][/autoit][autoit]_CreateGui()
[/autoit][autoit][/autoit][autoit]Func _CreateGui()
[/autoit][autoit][/autoit][autoit]
Local $l_InternetSession = -99, $l_FTPSession
Local $errOpen, $errFTP
Local $nMsg
Local $iMaxDepth=3;max 3 vereichnisebenen <1=unendliche Rekrusionstiefe
Local $mainGui = GUICreate("FTP-Downloader", 623, 450, 271, 235)
Local $idLblLog = GUICtrlCreateEdit("", 8, 5, 467, 315, BitOR($WS_HSCROLL, $WS_VSCROLL))
Local $hLog = GUICtrlGetHandle($idLblLog)
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("3",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 $idBtnExit = GUICtrlCreateButton("Be&enden", 483, 160) ;Exit
GUICtrlSetState($idBtnDL, $Gui_DISABLE)
GUICtrlSetState($idBtnDisconnect, $Gui_DISABLE)#Region;falls aktiviert Positionen noch anpasser und Labeltext entfernen
[/autoit][autoit][/autoit][autoit]
Local $idLblColapsedTime = GUICtrlCreateLabel("", 8, 420, 400, 17)Local $idLblKBperSec = GUICtrlCreateLabel("", 450, 420, 500, 17)
[/autoit]
#EndRegion
GUISetState(@SW_SHOW, $hGuiChild1)
GUISetState(@SW_SHOW, $hGuiChild2)
_GUIScrollBars_Init(GUICtrlGetHandle($idLblLog))
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)
_getAllFTPFilesRekursiv($l_FTPSession, '/', @ScriptDir & "\Temp", $iMaxDepth, 0, $idPrgKB, $idLblKB, $idLblKBPer, $idPrgFile, $idLblFile, $idLblFilePer, $idLblColapsedTime, $idLblKBperSec, $idLblLog) ;<======= 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)
_Report('Download abgeschlossen',$hLog,1)
_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
die nötigen Funktionen habe ich in FTP_FileList_Recursiv.au3 ausgelagert. Diese UDF beinhaltet:- _getAllFTPFilesRekursiv: lädt einen bestimmten Ordner inkl. aller Unterverzeichnisse herunter, die zu Downloadenden Dateien werden mit _FTP_FileList_Rekursiv2D ermittelt.
- _createLocalDirIfNecessary prüft ob für eine Datei die lokale Verzeichnisstruktur besteht, falls nötig wird diese angelegt
- _report wird benutzt um Meldungen in die Console bzw. ein Editfeld einzutragen.
- _FTP_FileList_Rekursiv2D erhält alle nötigen Infos durch Aufruf von _FTP_FileList_Rekursiv und ermittelt die Gesamtgröße
- _FTP_FileList_Rekursiv füllt ein Array mit Dateien (und Verzeichnissen wenn $bFolders true) des FTP-Pfades inkl. aller Unterverzeichnisse. Diese Funktion sammelt die Daten und wird von _FTP_FileList_Rekursiv2D aufgerufen. Sie kann aber auch einzeln aufgerufen werden.
viel Spass mit der UDF für die das Beispiel ist,
autoBert
-
Du wirst wohl nicht der 1. sein der dieses Problem hat also Tante Google gezielt fragen, alle Möglichkeiten durchtesten oder die URL benennen und deine bisherigen erfolglosen Tests zeigen damit andere wissen was sie nicht mehr testen müssen.
mfg autoBert
-
bitte um Aufklärung, hat sich bei _ArraySort seit 3.3.6.1 etwas geändert? Ich benutze nämlich diese immer noch da ich am Anfang speziell bei _FTP_ListToArray2 Rückmeldunen bekam das meine Skripte unter 3.3.8.1 nicht mehr laufen. Zum Zahlen und Datum zu sortieren habe ich mir damals extra eine UDF (siehe Signatur) geschrieben.
Wenn jetzt _ArraySort automatisch unterscheiden kann (gleiche Datentypen in der Spalte vorausgesetzt) nach welchem Schema sortiert werden soll wäre dies ein echter Fortschritt und ein Grund auf 3.3.8.1 zu wechseln.mfg autoBert
-
Tausche die Original _RecursiveFileListToArray gegen:
Spoiler anzeigen
[autoit];===============================================================================
[/autoit]
; Function Name: _RecursiveFileListToArray($sPath[, $sPattern][, $iFlag][, $iFormat][, $fRecursion][, $sDelim])
; Description:: gibt Verzeichnisse (rekursiv) und/oder Dateien zurück, die einem RegExp-Pattern entsprechen
; Parameter(s): $sPath = Startverzeichnis
; $sPattern = ein beliebiges RexExp-Pattern für die Auswahl
; $iFlag = Auswahl
; 0 = Dateien & Verzeichnisse
; 1 = nur Dateien
; 2 = nur Verzeichnisse
; $iFormat = Rückgabeformat
; 0 = String
; 1 = Array mit [0] = Anzahl
; 2 = Nullbasiertes Array
; $fRecursion = Verzeichnisse rekursiv durchsuchen
; False = Nein
; True = Ja
; $sDelim = Trennzeichen für die String-Rückgabe
; Requirement(s): AutoIt 3.3.0.0
; Return Value(s): Array/String mit den gefundenen Dateien/Verzeichnissen
; Author(s): Oscar (http://www.autoit.de)
; Anregungen von: bernd670 (http://www.autoit.de)
; und: AspirinJunkie (http://www.autoit.de)
;===============================================================================
Func _RecursiveFileListToArray($sPath, $sPattern = '', $iFlag = 0, $iFormat = 1, $fRecursion = True, $sDelim = @CRLF, $fOpenDLL = True)
Local $hSearch, $sFile, $sReturn = '', $aD
Local Static $hDll
If StringRight($sPath, 1) <> '\' Then $sPath &= '\'
$hSearch = FileFindFirstFile($sPath & '*')
If @error Or $hSearch = -1 Then
If $iFormat And $sReturn = '' Then Return SetError(1, 1, StringSplit($sReturn, '', $iFormat))
If $iFormat Then Return SetError(1, 2, StringSplit(StringTrimRight($sReturn, StringLen($sDelim)), $sDelim, $iFormat))
Return $sReturn
EndIf
If $fOpenDLL Then $hDll = DllOpen('kernel32.dll')
While True
$sFile = FileFindNextFile($hSearch)
If @error Then ExitLoop
If @extended Then
$aD = DllCall($hDll, 'dword', 'GetFileAttributesW', 'wstr', $sPath & $sFile)
If @error Or BitAND($aD[0], 0x400) Then ContinueLoop
If StringRegExp($sPath & $sFile, $sPattern) And ($iFlag = 0 Or $iFlag = 2) Then $sReturn &= $sPath & $sFile & '\' & $sDelim
If $fRecursion Then $sReturn &= _RecursiveFileListToArray($sPath & $sFile & '\', $sPattern, $iFlag, 0, True, $sDelim, False)
ContinueLoop
EndIf
If StringRegExp($sFile, $sPattern) And ($iFlag = 0 Or $iFlag = 1) Then $sReturn &= $sPath & $sFile & $sDelim
WEnd
FileClose($hSearch)
If $fOpenDLL Then DllClose($hDll)
If $iFormat And $sReturn = '' Then Return SetError(0, 1, StringSplit($sReturn, '', $iFormat))
If $iFormat Then Return SetError(0, 2, StringSplit(StringTrimRight($sReturn, StringLen($sDelim)), $sDelim, $iFormat))
Return $sReturn
EndFunc ;==>_RecursiveFileListToArraydann ist der Fehler in Zeie 80 behoben.
mfg autoBert
-
Hallo butter,
ein bischen logisches Denken hilft und du verstehst warunm deine Versuche nicht klappen können.
Erst nach eigenem logischen Denken öffner
ZitatSchade, du hast selbst nicht die Erklärung gefunden.
Wo nichts ist kann nichts gefunden werden.
du solltest also beschreiben was du erreichen wilst.mfg autoBert
-
Ich denke es muss an dem Autoitteil liegen
denke ich nicht denn lt. Funktionskopf:
ZitatAlles anzeigen#FUNCTION# ====================================================================================================================
; Name...........: _WinHttpSimpleRequest
; Description ...: A function to send a request in a simpler form
; Syntax.........: _WinHttpSimpleRequest($hConnect, $sType, $sPath [, $sReferrer = Default [, $sData = Default [, $sHeader = Default [, $fGetHeaders = Default [, $iMode = Default ]]]]])
; Parameters ....: $hConnect - Handle from _WinHttpConnect
; $sType - [optional] GET or POST (default: GET)
; $sPath - [optional] request path (default: "" - empty string; meaning 'default' page on the server)
; $sReferrer - [optional] referrer (default: $WINHTTP_NO_REFERER)
; $sData - [optional] POST-Data (default: $WINHTTP_NO_REQUEST_DATA)
; $sHeader - [optional] additional Headers (default: $WINHTTP_NO_ADDITIONAL_HEADERS)
; $fGetHeaders - [optional] return response headers (default: False)
; $iMode - [optional] reading mode of result (default: 0)
; |0 - ASCII-text
; |1 - UTF-8 text
; |2 - binary data
; Return values .: Success - response data if $fGetHeaders = False (default)
; |Array if $fGetHeaders = True
; | [0] - response headers
; | [1] - response data
; Failure - 0 and set @error
; |1 - could not open request
; |2 - could not send request
; |3 - could not receive response
; |4 - $iMode is not valid
; Author ........: ProgAndy
; Modified.......: trancexx
; Remarks .......:
; Related .......: _WinHttpSimpleSSLRequest, _WinHttpSimpleSendRequest, _WinHttpSimpleSendSSLRequest, _WinHttpQueryHeaders, _WinHttpSimpleReadData
; Link ..........:
; Example .......:
; ===============================================================================================================================übergibst du die Werte in der richtigen Reihenfolge.
Mache daher ein eigenes Thema auf und stelle dort auch die Rückgabe von _WinHttpSimpleRequest ein.
mfg autoBert
-
Ich will ja noch was lernen, bin ja nicht dumm. Mitleid muss echt nicht sein.

Nachdem ich gestern auf das Thema gestossen bin habe ich das nächsrliegende ausprobiert und die registrierten Funktionen auf die übliche Art (deregistrieren einer Funktion durch "") getestet und die Umschaltung getestet. Das ich dir das Ergebnis hier eingestellt habe hat nichts mit Mitleid zu tun sondern das es schon vor meinem 1. Beitrag fertig war und bis ich lange theoretisch erkläre wie es funktioniert war dies der einfachere Weg.mfg autoBert
-
Lass mal dieses Skript unverändert laufen:
Spoiler anzeigen
[autoit]#include <IE.au3>
[/autoit] [autoit][/autoit] [autoit]Dim $oIE = _IECreate()
[/autoit] [autoit][/autoit] [autoit]
ObjEvent($oIE, "IEEvent_", "DWebBrowserEvents2")
$bTimeOut = False
$iTimeOut=900000 ;bitte mindestenst 1 mal mit diesem Wert durchlaufen lassen danach 1 mal mit 10 dies sollte beide Varianten zeigen
$iTime=TimerInit()
$sURL = "www.autoit.de"
_IENavigate($oIE, $sURL, 0)
If $oIE.readyState <> "Vor While...Wend: complete" and $oIE.readyState <> 4 Then
ConsoleWrite("Nicht geladen" & @CRLF)
Else
ConsoleWrite("Vor While...Wend: Seite komplett geladen" & @CRLF)
EndIfWhile Not $bTimeOut And $oIE.readyState <> 4
[/autoit] [autoit][/autoit] [autoit]
Sleep(1000)
WEndIf $oIE.readyState <> "Nach While...Wend: complete" and $oIE.readyState <> 4 Then
[/autoit] [autoit][/autoit] [autoit]
ConsoleWrite("Nicht geladen" & @CRLF)
Else
ConsoleWrite("Nach While...Wend: Seite komplett geladen" & @CRLF)
EndIf
If $bTimeOut Then
ConsoleWrite(@CRLF&@CRLF&'Seite: ' & $sURL&' nicht in '&$iTime &' ms geladen!'&@CRLF)
Else
ConsoleWrite(@CRLF&@CRLF&'Seite: ' & $sURL&' in '&$iTime &' ms geladen!'&@CRLF)
EndIf;_IEQuit($oIE)
;_IEQuit($oIE)
ExitFunc IEEvent_NavigateError($pdisp, $url, $tf, $status, $cancel)
[/autoit] [autoit][/autoit] [autoit]
$msg = "Problems loading page: " & $url & @CRLF
$msg = $msg & "Status: " & $status & @CRLF
MsgBox(0, "PROBLEMS", $msg)
EndFunc ;==>IEEvent_NavigateErrorFunc IEEvent_ProgressChange($Progress, $ProgressMax)
[/autoit]
Local $iDiff=TimerDiff($iTime)
;ConsoleWrite($Progress & '/' & $ProgressMax &@TAB& $oIE.readyState & ' bisher: ' &$iDiff & @CRLF)
If TimerDiff($iTime) > $iTimeOut Then
If $oIE.readyState <> 4 Then $bTimeOut = True
$iTime=TimerDiff($iTime)
;_IEAction($oIE,"stop")
;Exit
EndIf
EndFunc ;==>IEEvent_ProgressChangenach dem 1. Durchlauf änderst du $iTimeOut auf einen extrem kleinen Wert. Speichere dir beidesmal die Consolenausgaben in ein Textfile, falls du weitere Nachfragen hast möchte ich sie sehen.
mfg autoBert
-
Auch auf die Gefahr hin, dass du auf der Mitleidsmasche reist:
Spoiler anzeigen
[autoit]#include <ButtonConstants.au3>
[/autoit] [autoit][/autoit] [autoit]
#include <GUIConstantsEx.au3>
#include <WindowsConstants.au3>
#include "GUICtrl_SetOnHover\GUICtrlOnHover.au3"
Opt("GUIOnEventMode", 1)
Global $hWnd = "[CLASS:Chrome_WidgetWin_1]" ;MozillaWindowClass$Form1 = GUICreate("Game Keyboard", 213, 129, -1, -1, -1, $WS_EX_TOPMOST)
[/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]
$Button1 = GUICtrlCreateButton("Space", 8, 72, 91, 25)
;GUICtrlSetOnEvent(-1, "_Space")
$Button2 = GUICtrlCreateButton("U", 40, 10, 27, 25)
_GUICtrl_OnHoverRegister(-1, "_Hover_Func", "_Hover_Func")
GUICtrlSetOnEvent(-1, "_Click_Func2")
$Button3 = GUICtrlCreateButton("D", 40, 40, 27, 25)
_GUICtrl_OnHoverRegister(-1, "_Hover_Func", "_Hover_Func")
$Button4 = GUICtrlCreateButton("L", 8, 40, 27, 25)
_GUICtrl_OnHoverRegister(-1, "_Hover_Func", "_Hover_Func")
$Button5 = GUICtrlCreateButton("R", 73, 40, 27, 25)
_GUICtrl_OnHoverRegister(-1, "_Hover_Func", "_Hover_Func")
$Checkbox1 = GUICtrlCreateCheckbox("&Hover active", 112, 48, 81, 17)
GUICtrlSetState($Checkbox1, $GUI_CHECKED)
GUICtrlSetOnEvent(-1, '_CheckIt')
GUISetState(@SW_SHOW)
#EndRegion ### END Koda GUI section ###GUISetOnEvent($GUI_EVENT_CLOSE, "hGUIClose")
[/autoit] [autoit][/autoit] [autoit]
While 1
Sleep(1000)
WEnd
Func _CheckIt()
If BitAND(GUICtrlRead($Checkbox1), $GUI_CHECKED) Then
_GUICtrl_OnHoverRegister($Button2, "_Hover_Func", "_Hover_Func")
_GUICtrl_OnHoverRegister($Button3, "_Hover_Func", "_Hover_Func")
_GUICtrl_OnHoverRegister($Button4, "_Hover_Func", "_Hover_Func")
_GUICtrl_OnHoverRegister($Button5, "_Hover_Func", "_Hover_Func")
GUICtrlSetOnEvent($Button2, "")
GUICtrlSetOnEvent($Button3, "")
GUICtrlSetOnEvent($Button4, "")
GUICtrlSetOnEvent($Button5, "")
Else
_GUICtrl_OnHoverRegister($Button2, "", "")
_GUICtrl_OnHoverRegister($Button3, "", "")
_GUICtrl_OnHoverRegister($Button4, "", "")
_GUICtrl_OnHoverRegister($Button5, "", "")
GUICtrlSetOnEvent($Button2, "_Click_Func3")
GUICtrlSetOnEvent($Button3, "_Click_Func3")
GUICtrlSetOnEvent($Button4, "_Click_Func4")
GUICtrlSetOnEvent($Button5, "_Click_Func5")
EndIf
EndFunc ;==>_CheckItFunc _Hover_Func($iCtrlID, $iParam)
[/autoit] [autoit][/autoit] [autoit]
Local $sButton2_Action = "{UP DOWN}"
Local $sButton3_Action = "{DOWN DOWN}"
Local $sButton4_Action = "{LEFT DOWN}"
Local $sButton5_Action = "{RIGHT DOWN}"If $iParam = 2 Then ;Indicates On *Leave* Hover process
[/autoit] [autoit][/autoit] [autoit]
$sButton2_Action = "{UP UP}"
$sButton3_Action = "{DOWN UP}"
$sButton4_Action = "{LEFT UP}"
$sButton5_Action = "{RIGHT UP}"
EndIfSwitch $iCtrlID
[/autoit] [autoit][/autoit] [autoit]
Case $Button2
ConsoleWrite($sButton2_Action & @CRLF)
Case $Button3
ConsoleWrite($sButton3_Action & @CRLF)
Case $Button4
ConsoleWrite($sButton4_Action & @CRLF)
Case $Button5
ConsoleWrite($sButton5_Action & @CRLF)
EndSwitchEndFunc ;==>_Hover_Func
[/autoit] [autoit][/autoit] [autoit]Func _Click_Func2()
[/autoit] [autoit][/autoit] [autoit]
MsgBox(0, 'Clickfunc', '2', 4, $Form1)
EndFunc ;==>_Click_Func3Func _Click_Func3()
[/autoit] [autoit][/autoit] [autoit]
MsgBox(0, 'Clickfunc', '3', 4, $Form1)
EndFunc ;==>_Click_Func3Func _Click_Func4()
[/autoit] [autoit][/autoit] [autoit]
MsgBox(0, 'Clickfunc', '4', 4, $Form1)
EndFunc ;==>_Click_Func4Func _Click_Func5()
[/autoit] [autoit][/autoit] [autoit]
MsgBox(0, 'Clickfunc', '5', 4, $Form1)
EndFunc ;==>_Click_Func5Func hGUIClose()
[/autoit]
Exit
EndFunc ;==>hGUICloseIch habe das Skript so abgeändert das man das Schema erkennt. Die Spacetaste habe ich komplett ignoriert.
mfg autoBert
-
Kann dein Problem bestätigen, ich bekomme immer "Seite komplett geladen". Ist aber auch logisch da der Readystate 4 für komplett geladen steht, deine If Bedinung muss also so aussehen:
[autoit]If Not $oIE.readyState = "complete" and Not $oIE.readyState = 4 Then
[/autoit]
ConsoleWrite("Nicht geladen" & @CRLF)
Else
ConsoleWrite("Seite komplett geladen" & @CRLF)
EndIf
_IEQuit($oIE)
Exitmfg autoBert
-
Wie leite ich den Befehl aus der Hover-Funktion an ein anderes Fenster weiter? Mit der UDF geht's so.
Wenn du schon weist das es geht dann mach es so wie in dem hier nicht vorliegenden Beispiel wo es geht.
Es soll eine Art virtuelles "Game Keyboard" werden
Du solltest dir die Forenregeln durchlesen. Spielebots werden hier nicht unterstützt und ich konnte keinerlei Anzeichen dafür finden dass es die Steuerung für dein Spieleskript ist.Daher: Vote for Close
mfg autoBert