FTP Upload + Rechtsklick , dann Option Fesnter anzeigen

  • Hey Community,
    ich würde gerne ein Programm zum up- und downloaden von FTP-Servern schreiben.
    Dazu bräuchte ich einmal eine UDF für FTP's und eine Funktion/UDF mit folgender Funktion:
    Wenn ich eine Auswahl in einem List Fesnter (guictrlcreatelist()) mit RECHTSklick anklicke sich ein Optionsmenü öffnen , sowas wie als wenn man Rechtsklick auf das Trayicon von Autoit klickt.
    Gibt es da was?
    Danke im Vorraus.
    Werde das Programm selbstverständlich auf Autoit.de posten.

  • äh ein Post unter deinem steht was mit FTP-Upload samt UDF mit den Funktionen und nach dem Menü könntest auch mal die Suchfunktion bemühen.

  • Es tut mir echt leid für dich, aber so kann es einfach nicht klappen. Das war ein Hinweis! Und man will doch etwas lernen dabei, also schaut man sich die UDF im Thread drunter an (der auch noch FTP-Upload im Namen hat) setzt sich damit auseinander. Seit ich hier mitlese und schreibe steht hier die Devise erst Suche benutzen und wenn man nicht weiterkommt einen Thread eröffnen und sein bis dahin geschaffenes postet. Was ist daran so schwierig? Warum muss man gleich unfreundlich sein. Es ist sehr unwahrscheinlich, dass jemand mal dein Problem aus Jux oder Tollerei fertig macht, da dazu es auch keine richtige Problembeschreibung ist. Wenn man etwas lernen will, dann muss man sich auch Sachen selber erarbeiten.

  • pee , ich weiß.
    Aber ich habe mir natürlich den Thread unter mir durchgelesen... Ohne Erfolg.

    lev , das war keineswegs böse gemeint!

    @all
    habe mir nun die .FTP.au3 aus dem englischen Forum geladen..Verstehe aber leider nur Bahnhof!

  • Ein Tipp ohne mich a einzumischen.

    dann sollte man sowas erwähnen in seinem Post ;)

    Zitat

    pee , ich weiß.
    Aber ich habe mir natürlich den Thread unter mir durchgelesen... Ohne Erfolg.

    Wieso denn nur Bahnhof?

    Welche der Funktionen verstehst du net? Dir kann bestimmt geholfen werden nur du mußt etwas konkreter werden. (Ausschnitt der Funktion)

    MfG
    Der_Doc

  • Ich versteh überhaupt die ganzen Funktionen nicht.
    Wie sie aufgebaut sind und wie man sie aufruft also welche Parameter man braucht etc.

    • Offizieller Beitrag

    Also eine Antwort wie diese: "Sorry, aber auf so eine Antwort kann ich mit Freude verzichten!" finde ich schon ziemlich unangebracht. Eine Entschuldigung an Lev wäre hier wohl fällig.

    Und wenn Du ein FTP-Programm schreiben willst, dann solltest Du Dich schonmal mit der FTP.au3 beschäftigen, soll heißen: Funktionen ausprobieren.
    Einfach zu sagen: "Verstehe aber leider nur Bahnhof!" und dann darauf zu hoffen, dass wir das für Dich übernehmen, finde ich ziemlich dreist.

    Wir sind ja durchaus bereit Dir zu helfen, das heißt aber nicht, dass Dir hier das Script auf dem Silberteller serviert wird.
    Zeig uns, dass Du Dich mit der Materie beschäftigt hast, poste Deine bisherigen Versuche und wir schauen mal, ob/wie wir Dir helfen können. :)

  • Na gut , wenn ihr das denkt , entschuldige ich mich selbstverständlich
    Levithan, tut mir leid!
    Und ich habe grad etwas rumgespielt aber hat nichts gebracht.
    Denkt ihr echt , ich poste hier ohne vorher rumprobiert und mich eingelesen zu haben? =-O

  • Hinweis: Es gibt zur FTP.au3 eine Beispielsdatei (Englisches Forum),wo ein Beispielsskriopt mit Erklärung vorliegt.

    So hab ichs verstanden....

    Aber ich mag die FTP.au3 nicht,sie legt schlicht und einfach keine Log-Dateien an,und für die Debugging-Zeit kann ich auchn paar mehr zeilen schreiben....

    Zitat

    Programmieren ist so lange lustig bis ein Fehler auftritt!


    ~ Dankeschön

  • Also ich glaube es dir einfach mal.
    aber das ist das letzte mal das sowas vorkommt ja?

    Spoiler anzeigen
    [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    $Open = _FTPOpen('MyFTP Control')
    If @error Then
    MsgBox(4096, "Fehler FTP Verbindung oeffnen", "Es ist ein Fehler beim Versuch einer FTP Verbindung aufgetreten." &@CRLF& _
    "Die Anwendung wird beendet!")
    Exit
    EndIf
    $Conn = _FTPConnect($Open, $ftp_server, $ftp_username, $ftp_pass)
    If @error Then
    MsgBox(4096, "Fehler FTP Verbindung", "Bitte überprüfen Sie Username, Passwort oder FTPServernamen." &@CRLF& _
    "Die Anwendung wird beendet!")
    Exit
    EndIf
    $Ftpp = _FtpPutFile($Conn,$lokalfile,$remotefile)
    If @error Then
    MsgBox(4096, "Fehler Fileupload", "Es ist ein Fehler beim Fileupload aufgetreten." &@CRLF& _
    "Die Anwendung wird beendet!")
    Exit
    EndIf
    $Ftpc = _FTPClose($Open)
    GUICtrlSetState ( $gui_test_button, $GUI_Enable)

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit] [autoit]

    ;~ ############## Funktions Auszug aus der ftp.au3#####################

    [/autoit] [autoit][/autoit] [autoit]

    ;===============================================================================
    ;
    ; Function Name: _FTPOpen()
    ; Description: Opens an FTP session.
    ; Parameter(s): $s_Agent - Random name. ( like "myftp" )
    ; $l_AccessType - I dont got a clue what this does.
    ; $s_ProxyName - ProxyName.
    ; $s_ProxyBypass - ProxyByPasses's.
    ; $l_Flags - Special flags.
    ; Requirement(s): DllCall, wininet.dll
    ; Return Value(s): On Success - Returns an indentifier.
    ; On Failure - 0 and sets @ERROR
    ; Author(s): Wouter van Kesteren.
    ;
    ;===============================================================================

    [/autoit] [autoit][/autoit] [autoit]

    Func _FTPOpen($s_Agent, $l_AccessType = 1, $s_ProxyName = '', $s_ProxyBypass = '', $l_Flags = 0)

    Local $ai_InternetOpen = DllCall('wininet.dll', 'long', 'InternetOpen', 'str', $s_Agent, 'long', $l_AccessType, 'str', $s_ProxyName, 'str', $s_ProxyBypass, 'long', $l_Flags)
    If @error OR $ai_InternetOpen[0] = 0 Then
    SetError(-1)
    Return 0
    EndIf

    Return $ai_InternetOpen[0]

    EndFunc ;==> _FTPOpen()

    [/autoit] [autoit][/autoit] [autoit]

    ;===============================================================================
    ;
    ; Function Name: _FTPConnect()
    ; Description: Connects to an FTP server.
    ; Parameter(s): $l_InternetSession - The Long from _FTPOpen()
    ; $s_ServerName - Server name/ip.
    ; $s_Username - Username.
    ; $s_Password - Password.
    ; $i_ServerPort - Server port ( 0 is default (21) )
    ; $l_Service - I dont got a clue what this does.
    ; $l_Flags - Special flags.
    ; $l_Context - I dont got a clue what this does.
    ; Requirement(s): DllCall, wininet.dll
    ; Return Value(s): On Success - Returns an indentifier.
    ; On Failure - 0 and sets @ERROR
    ; Author(s): Wouter van Kesteren
    ;
    ;===============================================================================

    [/autoit] [autoit][/autoit] [autoit]

    Func _FTPConnect($l_InternetSession, $s_ServerName, $s_Username, $s_Password, $i_ServerPort = 0, $l_Service = 1, $l_Flags = 0, $l_Context = 0)

    Local $ai_InternetConnect = DllCall('wininet.dll', 'long', 'InternetConnect', 'long', $l_InternetSession, 'str', $s_ServerName, 'int', $i_ServerPort, 'str', $s_Username, 'str', $s_Password, 'long', $l_Service, 'long', $l_Flags, 'long', $l_Context)
    If @error OR $ai_InternetConnect[0] = 0 Then
    SetError(-1)
    Return 0
    EndIf

    Return $ai_InternetConnect[0]

    EndFunc ;==> _FTPConnect()

    [/autoit] [autoit][/autoit] [autoit]

    ;===============================================================================
    ;
    ; Function Name: _FTPPutFile()
    ; Description: Puts an file on an FTP server.
    ; Parameter(s): $l_FTPSession - The Long from _FTPConnect()
    ; $s_LocalFile - The local file.
    ; $s_RemoteFile - The remote Location for the file.
    ; $l_Flags - Special flags.
    ; $l_Context - I dont got a clue what this does.
    ; Requirement(s): DllCall, wininet.dll
    ; Return Value(s): On Success - 1
    ; On Failure - 0
    ; Author(s): Wouter van Kesteren
    ;
    ;===============================================================================

    [/autoit] [autoit][/autoit] [autoit]

    Func _FTPPutFile($l_FTPSession, $s_LocalFile, $s_RemoteFile, $l_Flags = 0, $l_Context = 0)

    [/autoit] [autoit][/autoit] [autoit]

    Local $ai_FTPPutFile = DllCall('wininet.dll', 'int', 'FtpPutFile', 'long', $l_FTPSession, 'str', $s_LocalFile, 'str', $s_RemoteFile, 'long', $l_Flags, 'long', $l_Context)
    If @error OR $ai_FTPPutFile[0] = 0 Then
    SetError(-1)
    Return 0
    EndIf

    Return $ai_FTPPutFile[0]

    EndFunc ;==> _FTPPutFile()
    ;===============================================================================
    ;
    ; Function Name: _FTPClose()
    ; Description: Closes the _FTPOpen session.
    ; Parameter(s): $l_InternetSession - The Long from _FTPOpen()
    ; Requirement(s): DllCall, wininet.dll
    ; Return Value(s): On Success - 1
    ; On Failure - 0
    ; Author(s): Wouter van Kesteren
    ;
    ;===============================================================================

    [/autoit] [autoit][/autoit] [autoit]

    Func _FTPClose($l_InternetSession)

    Local $ai_InternetCloseHandle = DllCall('wininet.dll', 'int', 'InternetCloseHandle', 'long', $l_InternetSession)
    If @error OR $ai_InternetCloseHandle[0] = 0 Then
    SetError(-1)
    Return 0
    EndIf

    Return $ai_InternetCloseHandle[0]

    EndFunc ;==> _FTPClose()

    [/autoit]

    Das ist alles was du für einen Upload brauchst.

    Noch die Variablen Server, Username, Paswort ausfüllen und uploaden.

    MfG
    Der_Doc

  • Danke für die Antwort!
    Ich habe es jetzt so versucht , aber es geht nicht? Sorry will nicht spammen , aer ich komme nun mal nicht weiter :P.

    [autoit]

    $lokalfile = "C:\Dokumente und Einstellungen\Dominik Schubert\Desktop\homer_simpson"$remotefile = "wwww/musik"$ftp_server = "r1flex.kilu.de"$ftp_username = "r1flex@"$ftp_pass = "zensiert" ;ist aber richtig!
    Global $gui_test_button, $GUI_Enable
    $Open = _FTPOpen("MyFTP Control") If @error Then MsgBox(4096, "Fehler FTP Verbindung oeffnen", "Es ist ein Fehler beim Versuch einer FTP Verbindung aufgetreten." &@CRLF& _ "Die Anwendung wird beendet!") Exit EndIf$Conn = _FTPConnect($Open, $ftp_server, $ftp_username, $ftp_pass) If @error Then MsgBox(4096, "Fehler FTP Verbindung", "Bitte überprüfen Sie Username, Passwort oder FTPServernamen." &@CRLF& _ "Die Anwendung wird beendet!") Exit EndIf$Ftpp = _FtpPutFile($Conn,$lokalfile,$remotefile) If @error Then MsgBox(4096, "Fehler Fileupload", "Es ist ein Fehler beim Fileupload aufgetreten." &@CRLF& _ "Die Anwendung wird beendet!") Exit EndIf$Ftpc = _FTPClose($Open) GUICtrlSetState ( $gui_test_button, $GUI_Enable)

    [/autoit][autoit][/autoit][autoit][/autoit][autoit]

    ;~ ############## Funktions Auszug aus der ftp.au3#####################
    ;===============================================================================;; Function Name: _FTPOpen(); Description: Opens an FTP session.; Parameter(s): $s_Agent - Random name. ( like "myftp" ); $l_AccessType - I dont got a clue what this does.; $s_ProxyName - ProxyName.; $s_ProxyBypass - ProxyByPasses's.; $l_Flags - Special flags.; Requirement(s): DllCall, wininet.dll; Return Value(s): On Success - Returns an indentifier.; On Failure - 0 and sets @ERROR; Author(s): Wouter van Kesteren.;;===============================================================================
    Func _FTPOpen($s_Agent, $l_AccessType = 1, $s_ProxyName = '', $s_ProxyBypass = '', $l_Flags = 0) Local $ai_InternetOpen = DllCall('wininet.dll', 'long', 'InternetOpen', 'str', $s_Agent, 'long', $l_AccessType, 'str', $s_ProxyName, 'str', $s_ProxyBypass, 'long', $l_Flags) If @error OR $ai_InternetOpen[0] = 0 Then SetError(-1) Return 0 EndIf Return $ai_InternetOpen[0] EndFunc ;==> _FTPOpen()
    ;===============================================================================;; Function Name: _FTPConnect(); Description: Connects to an FTP server.; Parameter(s): $l_InternetSession - The Long from _FTPOpen(); $s_ServerName - Server name/ip.; $s_Username - Username.; $s_Password - Password.; $i_ServerPort - Server port ( 0 is default (21) ); $l_Service - I dont got a clue what this does.; $l_Flags - Special flags.; $l_Context - I dont got a clue what this does.; Requirement(s): DllCall, wininet.dll; Return Value(s): On Success - Returns an indentifier.; On Failure - 0 and sets @ERROR; Author(s): Wouter van Kesteren;;===============================================================================
    Func _FTPConnect($l_InternetSession, $s_ServerName, $s_Username, $s_Password, $i_ServerPort = 0, $l_Service = 1, $l_Flags = 0, $l_Context = 0) Local $ai_InternetConnect = DllCall('wininet.dll', 'long', 'InternetConnect', 'long', $l_InternetSession, 'str', $s_ServerName, 'int', $i_ServerPort, 'str', $s_Username, 'str', $s_Password, 'long', $l_Service, 'long', $l_Flags, 'long', $l_Context) If @error OR $ai_InternetConnect[0] = 0 Then SetError(-1) Return 0 EndIf Return $ai_InternetConnect[0] EndFunc ;==> _FTPConnect()
    ;===============================================================================;; Function Name: _FTPPutFile(); Description: Puts an file on an FTP server.; Parameter(s): $l_FTPSession - The Long from _FTPConnect(); $s_LocalFile - The local file.; $s_RemoteFile - The remote Location for the file.; $l_Flags - Special flags.; $l_Context - I dont got a clue what this does.; Requirement(s): DllCall, wininet.dll; Return Value(s): On Success - 1; On Failure - 0; Author(s): Wouter van Kesteren;;===============================================================================
    Func _FTPPutFile($l_FTPSession, $s_LocalFile, $s_RemoteFile, $l_Flags = 0, $l_Context = 0)
    Local $ai_FTPPutFile = DllCall('wininet.dll', 'int', 'FtpPutFile', 'long', $l_FTPSession, 'str', $s_LocalFile, 'str', $s_RemoteFile, 'long', $l_Flags, 'long', $l_Context) If @error OR $ai_FTPPutFile[0] = 0 Then SetError(-1) Return 0 EndIf Return $ai_FTPPutFile[0] EndFunc ;==> _FTPPutFile();===============================================================================;; Function Name: _FTPClose(); Description: Closes the _FTPOpen session.; Parameter(s): $l_InternetSession - The Long from _FTPOpen(); Requirement(s): DllCall, wininet.dll; Return Value(s): On Success - 1; On Failure - 0; Author(s): Wouter van Kesteren;;===============================================================================
    Func _FTPClose($l_InternetSession) Local $ai_InternetCloseHandle = DllCall('wininet.dll', 'int', 'InternetCloseHandle', 'long', $l_InternetSession) If @error OR $ai_InternetCloseHandle[0] = 0 Then SetError(-1) Return 0 EndIf Return $ai_InternetCloseHandle[0] EndFunc ;==> _FTPClose()

    [/autoit]
  • Sorry ist ja meins :)

    Ändere mal dies $remotefile = "www/musik"
    in dies $remotefile = "/www/musik/"

    Du solltest natürlich auch noch nen Filenamen angeben! einmal bei lokalfile und natürlich bei remotefile
    einfache mit /filename hinter die Variablen hängen.

    EDIT:

    $lokalfile = "C:\Dokumente und Einstellungen\Dominik Schubert\Desktop\homer_simpson/FILENAME.ENDUNG"
    $remotefile = "/www/musik/FILENAME.ENDUNG"

    MfG
    Der_Doc