VB 5/6-Tipp 0193: FTP-Client mit der Wininet.dll
von ActiveVB
Beschreibung
Wer den Internet-Explorer installiert hat, kann die Vorteile dieser DLL nutzen. Gegenüber dem etwas maroden Inet-Steuerelement ist der FTP-Transfer hiermit wesentlich einfacher und fehlerfreier zu handhaben. Mit diesem kleinen FTP-Client lassen sich Dateien rauf- & runterladen, sowie Verzeichnisse erstellen, löschen und umbenennen. Zudem ist es möglich zwischen den Verzeichnissen bequem zu navigieren. Das Auslesen der Dateiattribute, -größen und Erstellungsdaten sowie Zeiten, wird ebenso berücksichtigt. Was hiermit nicht möglich sein wird, ist die Anzeige eines Progressbars.
Update nach einem Hinweis von Klaus Langbein am 23. September 2004: Nun werden die Daten nicht mehr aus dem Cache geladen, falls sie dort vorhanden sind. Weitere Informationen dazu siehe MSDN.
Schwierigkeitsgrad: | Verwendete API-Aufrufe: FileTimeToSystemTime, FtpCreateDirectoryA (FtpCreateDirectory), FtpDeleteFileA (FtpDeleteFile), FtpFindFirstFileA (FtpFindFirstFile), FtpGetFileA (FtpGetFile), FtpPutFileA (FtpPutFile), FtpRemoveDirectoryA (FtpRemoveDirectory), FtpRenameFileA (FtpRenameFile), FtpSetCurrentDirectoryA (FtpSetCurrentDirectory), InternetCloseHandle, InternetConnectA (InternetConnect), InternetFindNextFileA (InternetFindNextFile), InternetGetLastResponseInfoA (InternetGetLastResponseInfo), InternetOpenA (InternetOpen) | Download: |
'Dieser Quellcode stammt von http://www.activevb.de 'und kann frei verwendet werden. Für eventuelle Schäden 'wird nicht gehaftet. 'Um Fehler oder Fragen zu klären, nutzen Sie bitte unser Forum. 'Ansonsten viel Spaß und Erfolg mit diesem Source! '------------- Anfang Projektdatei Project1.vbp ------------- '--------- Anfang Formular "Form1" alias Form1.frm --------- ' Steuerelement: Kontrollkästchen-Steuerelement "Check2" ' Steuerelement: Textfeld "Text1" ' Steuerelement: Schaltfläche "Command3" (Index von 0 bis 5) ' Steuerelement: Optionsfeld-Steuerelement "Option1" (Index von 0 bis 1) ' Steuerelement: Schaltfläche "Command2" ' Steuerelement: Schaltfläche "Command1" ' Steuerelement: Listen-Steuerelement "List1" ' Steuerelement: Dateiauswahlliste "File1" ' Steuerelement: Verzeichnisauswahlliste "Dir1" ' Steuerelement: Festplattenauswahlliste "Drive1" ' Steuerelement: Kontrollkästchen-Steuerelement "Check1" ' Steuerelement: Schaltfläche "Command5" ' Steuerelement: Schaltfläche "Command4" ' Steuerelement: Beschriftungsfeld "Label14" ' Steuerelement: Beschriftungsfeld "Label13" ' Steuerelement: Beschriftungsfeld "Label10" ' Steuerelement: Beschriftungsfeld "Label9" ' Steuerelement: Beschriftungsfeld "Label15" ' Steuerelement: Beschriftungsfeld "Label12" ' Steuerelement: Beschriftungsfeld "Label11" ' Steuerelement: Beschriftungsfeld "Label8" ' Steuerelement: Beschriftungsfeld "Label7" ' Steuerelement: Beschriftungsfeld "Label6" ' Steuerelement: Beschriftungsfeld "Label5" ' Steuerelement: Beschriftungsfeld "Label1" ' Steuerelement: Beschriftungsfeld "label4" ' Steuerelement: Beschriftungsfeld "Label3" ' Steuerelement: Beschriftungsfeld "Label2" Option Explicit Private Declare Function InternetConnect Lib "wininet.dll" Alias _ "InternetConnectA" (ByVal hInternetSession As Long, _ ByVal sServerName As String, ByVal nServerPort As Integer, _ ByVal sUsername As String, ByVal sPassword As String, _ ByVal lService As Long, ByVal lFlags As Long, ByVal _ lContext As Long) As Long Private Declare Function InternetOpen Lib "wininet.dll" Alias _ "InternetOpenA" (ByVal sAgent As String, ByVal lAccessType _ As Long, ByVal sProxyName As String, ByVal sProxyBypass _ As String, ByVal lFlags As Long) As Long Private Declare Function InternetCloseHandle Lib "wininet.dll" _ (ByVal hInet As Long) As Integer Private Declare Function FtpSetCurrentDirectory Lib "wininet.dll" _ Alias "FtpSetCurrentDirectoryA" (ByVal hFtpSession As _ Long, ByVal lpszDirectory As String) As Long Private Declare Function FtpFindFirstFile Lib "wininet.dll" _ Alias "FtpFindFirstFileA" (ByVal hFtpSession As Long, _ ByVal lpszSearchFile As String, lpFindFileData As _ WIN32_FIND_DATA, ByVal dwFlags As Long, ByVal dwContent _ As Long) As Long Private Declare Function InternetFindNextFile Lib "wininet.dll" _ Alias "InternetFindNextFileA" (ByVal hFind As Long, _ lpvFindData As WIN32_FIND_DATA) As Long Private Declare Function FtpGetFile Lib "wininet.dll" Alias _ "FtpGetFileA" (ByVal hFtpSession As Long, ByVal _ lpszRemoteFile As String, ByVal lpszNewFile As String, _ ByVal fFailIfExists As Boolean, ByVal dwFlagsAndAttributes _ As Long, ByVal dwFlags As Long, ByVal dwContext As Long) _ As Long Private Declare Function FtpPutFile Lib "wininet.dll" Alias _ "FtpPutFileA" (ByVal hFtpSession As Long, ByVal _ lpszLocalFile As String, ByVal lpszRemoteFile As String, _ ByVal dwFlags As Long, ByVal dwContext As Long) As Long Private Declare Function FtpDeleteFile Lib "wininet.dll" _ Alias "FtpDeleteFileA" (ByVal hFtpSession As Long, _ ByVal lpszFileName As String) As Long Private Declare Function FtpRenameFile Lib "wininet.dll" _ Alias "FtpRenameFileA" (ByVal hFtpSession As Long, _ ByVal lpszFromFileName As String, ByVal lpszToFileName _ As String) As Long Private Declare Function FtpCreateDirectory Lib "wininet" _ Alias "FtpCreateDirectoryA" (ByVal hFtpSession As _ Long, ByVal lpszDirectory As String) As Long Private Declare Function FtpRemoveDirectory Lib "wininet" _ Alias "FtpRemoveDirectoryA" (ByVal hFtpSession As _ Long, ByVal lpszDirectory As String) As Long Private Declare Function InternetGetLastResponseInfo Lib _ "wininet.dll" Alias "InternetGetLastResponseInfoA" _ (lpdwError As Long, ByVal lpszBuffer As String, _ lpdwBufferLength As Long) As Long Private Const ERROR_NO_MORE_FILES As Long = 18& Private Const ERROR_INTERNET_EXTENDED_ERROR As Long = 12003& Private Const FTP_TRANSFER_TYPE_BINARY As Long = &H0& Private Const FTP_TRANSFER_TYPE_ASCII As Long = &H1& Private Const INTERNET_FLAG_PASSIVE As Long = &H8000000 Private Const INTERNET_FLAG_RELOAD As Long = &H80000000 Private Const INTERNET_FLAG_KEEP_CONNECTION As Long = &H400000 Private Const INTERNET_FLAG_MULTIPART As Long = &H200000 Private Const INTERNET_OPEN_TYPE_PRECONFIG As Long = 0& Private Const INTERNET_OPEN_TYPE_DIRECT As Long = 1& Private Const INTERNET_OPEN_TYPE_PROXY As Long = 3& Private Const INTERNET_INVALID_PORT_NUMBER As Long = 0& Private Const INTERNET_SERVICE_FTP As Long = 1& Private Const INTERNET_SERVICE_GOPHER As Long = 2& Private Const INTERNET_SERVICE_HTTP As Long = 3& Private Declare Function FileTimeToSystemTime Lib "kernel32" _ (lpFileTime As FILETIME, lpSystemTime As SYSTEMTIME) _ As Long Private Const MAX_PATH As Long = 260& Private Const NO_ERROR As Long = 0& Private Const FILE_ATTRIBUTE_READONLY As Long = &H1& Private Const FILE_ATTRIBUTE_HIDDEN As Long = &H2& Private Const FILE_ATTRIBUTE_SYSTEM As Long = &H4& Private Const FILE_ATTRIBUTE_DIRECTORY As Long = &H10& Private Const FILE_ATTRIBUTE_ARCHIVE As Long = &H20& Private Const FILE_ATTRIBUTE_NORMAL As Long = &H80& Private Const FILE_ATTRIBUTE_TEMPORARY As Long = &H100& Private Const FILE_ATTRIBUTE_COMPRESSED As Long = &H800& Private Const FILE_ATTRIBUTE_OFFLINE As Long = &H1000& Private Type FILETIME dwLowDateTime As Long dwHighDateTime As Long End Type Private Type WIN32_FIND_DATA dwFileAttributes As Long ftCreationTime As FILETIME ftLastAccessTime As FILETIME ftLastWriteTime As FILETIME nFileSizeHigh As Long nFileSizeLow As Long dwReserved0 As Long dwReserved1 As Long cFileName As String * MAX_PATH cAlternate As String * 14 End Type Private Type SYSTEMTIME wYear As Integer wMonth As Integer wDayOfWeek As Integer wDay As Integer wHour As Integer wMinute As Integer wSecond As Integer wMilliseconds As Integer End Type Private Const FTP_UAgent As String = "FTP Demo" Private FTP_Server As String, FTP_User As String, FTP_PassW As String Private hOpen As Long, hConnection As Long Private transfer As Long Private FileList() As WIN32_FIND_DATA Private fData As WIN32_FIND_DATA Private Sub Form_Load() FTP_Server = "ftp.qualcomm.com" FTP_User = "anonymous" FTP_PassW = "guest@unknown" ' FTP_Server = "ftp.adobe.com" ' FTP_User = "anonymous" ' FTP_PassW = "guest@unknown" Label10.Caption = FTP_Server Label13.Caption = FTP_User Label14.Caption = FTP_PassW Option1(0).Value = True Call ButtonsDisconnected Call File1_Click End Sub Private Sub Form_Unload(Cancel As Integer) If hConnection <> 0 Then InternetCloseHandle (hConnection) If hOpen <> 0 Then InternetCloseHandle (hOpen) End Sub Private Sub Command1_Click() Dim x As Integer Dim Pfad As String If File1.ListCount <> 0 Then For x = 0 To File1.ListCount - 1 If File1.Selected(x) Then Pfad = File1.Path & "\" & File1.List(x) If Dir$(Pfad, vbNormal) <> "" Then Call PutFile(Pfad) DoEvents End If End If Next x fListDir (Label1.Caption) Call FillListBox End If End Sub Private Sub Command2_Click() Dim fFile As String Dim x As Integer x = List1.ListIndex If x <> -1 Then For x = 0 To List1.ListCount - 1 If List1.Selected(x) And FileList(x).dwFileAttributes <> _ FILE_ATTRIBUTE_DIRECTORY Then fFile = Trim$(FileList(x).cFileName) Call GetFile(Label1.Caption, fFile, File1.Path, Check2.Value = vbChecked) File1.Refresh DoEvents End If Next x Else Call MsgBox("Keine Datei ausgewählt!") End If End Sub Private Sub Command3_Click(Index As Integer) Select Case Index Case 0: List1.ListIndex = 1 Call List1_DblClick Case 1: Call fListDir(Label1.Caption) Call FillListBox Case 2: Call ViewFile Case 3: Call DeleteFile Case 4: Call RenameFile Case 5: Call MakeDir End Select End Sub Private Sub Command4_Click() If hConnection <> 0 Then Call StatusText("Log off...") Call InternetCloseHandle(hConnection) Call InternetCloseHandle(hOpen) Call GetStatus hConnection = 0 hOpen = 0 Call ButtonsDisconnected List1.Clear Label1.Caption = "" End If End Sub Private Sub Command5_Click() Dim nFlag As Long Dim Proxy As String Dim Er As Boolean MousePointer = vbHourglass Label1.Caption = FTP_Server & "/" Call StatusText("Verbinde...") '### Für den Proxybetrieb 'Proxy = "...." 'hOpen = InternetOpen(FTP_UAgent, INTERNET_OPEN_TYPE_PROXY, _ ' Proxy, vbNullString, 0) '### Ohne Proxy hOpen = InternetOpen(FTP_UAgent, INTERNET_OPEN_TYPE_DIRECT, _ vbNullString, vbNullString, 0) If hOpen <> 0 Then If Check1.Value Then nFlag = INTERNET_FLAG_PASSIVE hConnection = InternetConnect(hOpen, Label10.Caption, _ INTERNET_INVALID_PORT_NUMBER, _ Label13.Caption, Label14.Caption, _ INTERNET_SERVICE_FTP, nFlag, 0) Call GetStatus If hConnection <> 0 Then Call fListDir(Label1.Caption) Call FillListBox Call ButtonsConnected Call GetStatus Else Er = True End If Else Er = True End If If Er Then Call StatusText("Fehler beim Verbindungsaufbau") MousePointer = vbDefault End Sub Private Sub List1_Click() Dim x As Integer, Attr As Integer Dim aa As String Dim l As Long Dim sTime As SYSTEMTIME Dim lTime As FILETIME x = List1.ListIndex If x > -1 Then Attr = FileList(x).dwFileAttributes If Attr And FILE_ATTRIBUTE_READONLY Then aa = "W " If Attr And FILE_ATTRIBUTE_HIDDEN Then aa = aa & "H " If Attr And FILE_ATTRIBUTE_SYSTEM Then aa = aa & "S " If Attr And FILE_ATTRIBUTE_DIRECTORY Then aa = aa & "D " If Attr And FILE_ATTRIBUTE_ARCHIVE Then aa = aa & "A " If Attr And FILE_ATTRIBUTE_NORMAL Then aa = aa & "N " If Attr And FILE_ATTRIBUTE_TEMPORARY Then aa = aa & "T " If Attr And FILE_ATTRIBUTE_COMPRESSED Then aa = aa & "C" Label7.Caption = Trim$(aa) Label12.Caption = FileList(x).nFileSizeLow lTime = FileList(x).ftLastWriteTime l = FileTimeToSystemTime(lTime, sTime) Label15.Caption = CalcFTime(sTime) End If End Sub Private Sub List1_DblClick() Dim x As Integer Dim fFile As String, fPath As String If List1.ListCount <> 0 Then If FileList(List1.ListIndex).dwFileAttributes = FILE_ATTRIBUTE_DIRECTORY Then fFile = Trim$(FileList(List1.ListIndex).cFileName) MousePointer = vbHourglass If fFile = ".." Then If Label1.Caption <> FTP_Server & "/" Then fPath = Label1.Caption & fFile Call fListDir(fPath) Call FillListBox fPath = Left(fPath, Len(fPath) - 3) For x = Len(fPath) To 1 Step -1 If Mid$(fPath, x, 1) = "/" Then fPath = Left$(fPath, x) Exit For End If Next x Label1.Caption = fPath End If ElseIf fFile = "." Then fPath = Label1.Caption Call fListDir(fPath) Call FillListBox Else fPath = Label1.Caption & fFile Call fListDir(fPath) Call FillListBox Label1.Caption = fPath & "/" End If MousePointer = vbDefault End If End If End Sub Private Sub Option1_Click(Index As Integer) If Index = 0 Then transfer = FTP_TRANSFER_TYPE_ASCII Else transfer = FTP_TRANSFER_TYPE_BINARY End If End Sub Private Sub File1_Click() Label5.Caption = File1.Path & "\" & File1.FileName End Sub Private Sub Dir1_Change() File1.Path = Dir1.Path Label5.Caption = File1.Path & "\" & File1.FileName End Sub Private Sub Drive1_Change() Dir1.Path = Drive1.Drive End Sub Private Sub FillListBox() Dim fDir() As WIN32_FIND_DATA, fFile() As WIN32_FIND_DATA Dim Mem As WIN32_FIND_DATA Dim fName As String, fAttr As String, aa As String Dim x As Integer, y As Integer, Max As Integer Max = UBound(FileList) - 1 ReDim fFile(0 To 0) ReDim fDir(0 To 0) MousePointer = vbHourglass Call StatusText("Sortiere Verzeichnis...") For x = 0 To Max If FileList(x).dwFileAttributes = FILE_ATTRIBUTE_DIRECTORY Then fDir(UBound(fDir)) = FileList(x) ReDim Preserve fDir(0 To UBound(fDir) + 1) Else fFile(UBound(fFile)) = FileList(x) ReDim Preserve fFile(0 To UBound(fFile) + 1) End If Next x For x = 0 To UBound(fDir) - 1 For y = 0 To UBound(fDir) - 1 If LCase(fDir(y).cFileName) > LCase(fDir(x).cFileName) Then Mem = fDir(y) fDir(y) = fDir(x) fDir(x) = Mem End If Next y Next x For x = 0 To UBound(fFile) - 1 For y = 0 To UBound(fFile) - 1 If LCase(fFile(y).cFileName) > LCase(fFile(x).cFileName) Then Mem = fFile(y) fFile(y) = fFile(x) fFile(x) = Mem End If Next y Next x List1.Clear y = 0 For x = 0 To UBound(fDir) - 1 FileList(y) = fDir(x) List1.AddItem UCase(Trim$(FileList(x).cFileName)) y = y + 1 Next x For x = 0 To UBound(fFile) - 1 FileList(y) = fFile(x) List1.AddItem LCase(Trim$(FileList(y).cFileName)) y = y + 1 Next x MousePointer = vbDefault Call StatusText("Ok") End Sub Private Sub DeleteFile() Dim fFile As String Dim x As Integer Dim Result As Long x = List1.ListIndex If x <> -1 Then If chFDir(Label1.Caption) Then MousePointer = vbHourglass fFile = Trim$(FileList(x).cFileName) If FileList(x).dwFileAttributes <> FILE_ATTRIBUTE_DIRECTORY Then Call StatusText("Lösche Datei...") Result = FtpDeleteFile(hConnection, fFile) ElseIf Left$(fFile, 1) <> "." Then Call StatusText("Lösche Verzeichnis...") Result = FtpRemoveDirectory(hConnection, fFile) End If Call GetStatus MousePointer = vbDefault End If If Result = 0 Then Call MsgBox("Datei kann nicht gelöscht werden!") Else Call fListDir(Label1.Caption) Call FillListBox End If Else Call MsgBox("Keine Datei ausgewählt!") End If End Sub Private Sub MakeDir() Dim fDir As String Dim x As Integer Dim Result As Long fDir = Trim$(InputBox("Neuen Verzeichnisnamen eingeben", "Umbenennen")) If fDir <> "" Then If chFDir(Label1.Caption) Then Call StatusText("Erstelle Verzeichnis...") MousePointer = vbHourglass Result = FtpCreateDirectory(hConnection, fDir) MousePointer = vbDefault Call GetStatus If Result <> 0 Then fListDir (Label1.Caption) Call FillListBox Else Call MsgBox("Verzeichnis kann nicht erstellt werden!") End If End If End If End Sub Private Sub ViewFile() Dim fFile As String Dim x As Integer x = List1.ListIndex If x <> -1 Then If FileList(x).dwFileAttributes <> FILE_ATTRIBUTE_DIRECTORY Then fFile = Trim$(FileList(x).cFileName) Call GetFile(Label1.Caption, fFile, App.Path) Shell "notepad.exe " & App.Path & "\" & fFile, vbNormalFocus End If Else Call MsgBox("Keine Datei ausgewählt!") End If End Sub Private Sub RenameFile() Dim fFile As String, ToFile As String Dim x As Integer Dim Result As Long x = List1.ListIndex If x <> -1 Then fFile = Trim$(FileList(x).cFileName) ToFile = InputBox("Neuen Dateinamen eingeben", "Umbenennen", fFile) If Len(ToFile) > 0 Then If chFDir(Label1.Caption) Then Call StatusText("Benenne um...") MousePointer = vbHourglass Result = FtpRenameFile(hConnection, fFile, ToFile) Call GetStatus If Result <> 0 Then Call fListDir(Label1.Caption) Call FillListBox Else Call MsgBox("Umbenennen nicht möglich") End If MousePointer = vbDefault End If End If Else Call MsgBox("Keine Datei ausgewählt!") End If End Sub Private Sub GetFile(ByVal fDir As String, ByVal fFile As String, _ ByVal lFile As String, ByVal UseCache As Boolean) Dim Result As Long Dim Flags As Long lFile = lFile & "/" & fFile Call chFDir(fDir) MousePointer = vbHourglass StatusText ("Lade Datei...") If UseCache Then Flags = transfer Else Flags = transfer Or INTERNET_FLAG_RELOAD End If Result = FtpGetFile(hConnection, fFile, lFile, 0, 0, Flags, 0) Call GetStatus MousePointer = vbDefault If Result = 0 Then Call MsgBox("Übertragunsfehler") End Sub Private Sub PutFile(lFile As String) Dim Result As Long Dim x As Integer Dim fFile As String If chFDir(Label1.Caption) Then For x = Len(lFile) To 1 Step -1 If Mid$(lFile, x, 1) = "\" Then fFile = Mid$(lFile, x + 1) Exit For End If Next x If fFile <> "" Then MousePointer = vbHourglass Call StatusText("Übertrage Datei...") Result = FtpPutFile(hConnection, lFile, fFile, transfer, 0) Call GetStatus MousePointer = vbDefault If Result = 0 Then Call MsgBox("Übertragungsfehler!") End If End If End Sub Private Function chFDir(fDir As String) As Boolean Dim Result As Long If Len(fDir) > 0 Then On Error Resume Next fDir = Mid(fDir, Len(Label10.Caption) + 1, Len(fDir) - Len(Label10.Caption)) On Error Goto 0 MousePointer = vbHourglass StatusText ("Setze Pfad...") Result = FtpSetCurrentDirectory(hConnection, fDir) Call GetStatus MousePointer = vbDefault If Result = 0 Then Call MsgBox("Verzeichnis nicht vorhanden!") Else chFDir = True End If End If End Function Private Sub fListDir(fDir As String) Dim hFile As Long, Result As Long ReDim FileList(0 To 0) If chFDir(fDir) Then MousePointer = vbHourglass Call StatusText("Lese Verzeichnis...") fData.cFileName = String(MAX_PATH, 0) hFile = FtpFindFirstFile(hConnection, Trim$(Text1.Text), fData, 0, 0) Call FileAdd Do fData.cFileName = String(MAX_PATH, 0) Result = InternetFindNextFile(hFile, fData) If Result <> 0 Then Call FileAdd Loop Until (Result = 0) Call InternetCloseHandle(hFile) Call GetStatus MousePointer = vbDefault If Left$(FileList(0).cFileName, 1) <> "." Then fData.dwFileAttributes = FILE_ATTRIBUTE_DIRECTORY fData.cFileName = "." & Chr$(0) Call FileAdd fData.cFileName = ".." & Chr$(0) Call FileAdd End If End If End Sub Private Sub FileAdd() Dim x As Integer, fFile As String fFile = fData.cFileName x = InStr(1, fFile, Chr$(0)) If x > 0 Then fFile = Trim$(Left$(fFile, x - 1)) Else fFile = "" End If If fFile <> "" Then fData.cFileName = fFile FileList(UBound(FileList)) = fData ReDim Preserve FileList(0 To UBound(FileList) + 1) End If End Sub Private Function CalcFTime(FTime As SYSTEMTIME) As String Dim WT(0 To 6) As String, Datum As String Dim Zeit As String, aa As String WT(0) = "So" WT(1) = "Mo" WT(2) = "Di" WT(3) = "Mi" WT(4) = "Do" WT(5) = "Fr" WT(6) = "Sa" With FTime Datum = WT(.wDayOfWeek) & " " & .wDay & "." & .wMonth & "." & .wYear aa = .wMinute If Len(aa) = 1 Then aa = "0" & aa Zeit = .wHour & ":" & aa CalcFTime = Datum & " um " & Zeit End With End Function Private Sub GetStatus() Dim Buffer As String, aa As String Dim l As Long, Inf As Long Call InternetGetLastResponseInfo(Inf, vbNullString, l) If Inf Then Buffer = String(l + 1, 0) Call InternetGetLastResponseInfo(Inf, Buffer, l) aa = Inf & " " & Buffer Else aa = "Ok" End If Label9.Caption = aa Label9.Refresh End Sub Private Sub StatusText(Text As String) Label9.Caption = Text Label9.Refresh End Sub Private Sub ButtonsConnected() Dim x As Integer Command1.Enabled = True Command2.Enabled = True For x = 0 To Command3.UBound Command3(x).Enabled = True Next x Command4.Enabled = True Command5.Enabled = False Check1.Enabled = False End Sub Private Sub ButtonsDisconnected() Dim x As Integer Command1.Enabled = False Command2.Enabled = False For x = 0 To Command3.UBound Command3(x).Enabled = False Next x Command4.Enabled = False Command5.Enabled = True Check1.Enabled = True End Sub '---------- Ende Formular "Form1" alias Form1.frm ---------- '-------------- Ende Projektdatei Project1.vbp --------------
Tipp-Kompatibilität:
Windows/VB-Version | Win32s | Win95 | Win98 | WinME | WinNT4 | Win2000 | WinXP |
VB4 | |||||||
VB5 | |||||||
VB6 |
Ihre Meinung
Falls Sie Fragen zu diesem Artikel haben oder Ihre Erfahrung mit anderen Nutzern austauschen möchten, dann teilen Sie uns diese bitte in einem der unten vorhandenen Themen oder über einen neuen Beitrag mit. Hierzu können sie einfach einen Beitrag in einem zum Thema passenden Forum anlegen, welcher automatisch mit dieser Seite verknüpft wird.
Archivierte Nutzerkommentare
Klicken Sie diesen Text an, wenn Sie die 98 archivierten Kommentare ansehen möchten.
Diese stammen noch von der Zeit, als es noch keine direkte Forenunterstützung für Fragen und Kommentare zu einzelnen Artikeln gab.
Aus Gründen der Vollständigkeit können Sie sich die ausgeblendeten Kommentare zu diesem Artikel aber gerne weiterhin ansehen.
Kommentar von JOJO am 08.07.2011 um 18:17
Hi bei mir funzt der Code nur in VB6 aber sobald ich eine Exe erstelle kann ich mich zwar noch Connecten aber beim Upload der Daten (txt-Datei) hängt sich die exe auf.
System: Win7
Gruß JOJO
Kommentar von Max am 12.07.2009 um 13:44
Bei mir kommt ein Fehler bei:
bei viewfile
Call GetFile(Label1.Text, fFile, My.Application.Info.DirectoryPath)
kein argument angegeben oder so kann mir wer helfen
Kommentar von FrankAdelik am 09.05.2008 um 08:18
Moin.
Der einzige Fehler der bei mir beim Kompilieren kam war der hier:
Call GetFile(Label1.Caption, fFile, App.Path, Check2.Value = 1)
Im Original fehlt in der Routine ViewFile bei der Instruktion GetFile der vierte Parameter. Und zwar ob vom Cache gelesen werden soll oder nicht. Das ist Check2 und um daraus nen boolean zu machen = 1.
Gruß
Frank
Kommentar von Suter Andreas am 07.01.2008 um 07:31
neu e-mail
Kommentar von Xels am 04.01.2008 um 11:17
Das läuft ja alles prima, aber jetzt fehlt mir nur noch eines.. Ich muss die Rechte der hochgeladenen Dateien ändern können. Hat da jemand eine Idee?
Und kommt mir bitte nicht mit WinSCP und sowas.. Ich führe das als Batch aus. Da gibt es keinen Usereingriff.
Kommentar von BulldogISL am 30.12.2007 um 14:39
Hallo @ all.. !!
.. hat vielleicht schon jemand eine Ahnung, warum ich den Client nicht als EXE abspeichern kann..
Ich scheine ja offensichtlich nicht der Einzige zu sein, dem es so geht..
Grüße an dieser Stelle besonders an ZERROX
Über eine rasche Hilfe (welcher Art auch immer) würde ich mich sehr freuen..!!
Gruß
André
Kommentar von pire am 27.11.2007 um 12:10
When your FTP Directory Listing won't get updated use following Code instead
Private Sub fListDir(fDir As String)
Dim hFile As Long, Result As Long
ReDim FileList(0 To 0)
If chFDir(fDir) Then
MousePointer = vbHourglass
Call StatusText("Lese Verzeichnis...")
fData.cFileName = String(MAX_PATH, 0)
hFile = FtpFindFirstFile(hConnection, Trim$(Text1.Text), _
fData, INTERNET_FLAG_RELOAD, 0)
Call FileAdd
Do
fData.cFileName = String(MAX_PATH, 0)
Result = InternetFindNextFile(hFile, fData)
If Result <> 0 Then Call FileAdd
Loop Until (Result = 0)
Call InternetCloseHandle(hFile)
Call GetStatus
MousePointer = vbDefault
If Left$(FileList(0).cFileName, 1) <> "." Then
fData.dwFileAttributes = FILE_ATTRIBUTE_DIRECTORY
fData.cFileName = "." & Chr$(0)
Call FileAdd
fData.cFileName = ".." & Chr$(0)
Call FileAdd
End If
End If
End Sub
the diff is
OLD:
hFile = FtpFindFirstFile(hConnection, Trim$(Text1.Text), _
fData, 0, 0)
NEW:
hFile = FtpFindFirstFile(hConnection, Trim$(Text1.Text), _
fData, INTERNET_FLAG_RELOAD, 0)
Kommentar von zerrox am 24.08.2007 um 09:53
Wenn ich den Clienten als .exe speichern will kommt argument nich optional was kann ich da machen. Call GetFile(Label1.Caption, fFile, App.
Kommentar von bernd_sw am 23.08.2007 um 14:48
Hallo,
der Client funktioniert super, nur habe ich das gleiche Problem in der Firma mit dem Firewall eintrag. Bei WS-FTP gebe ich "Use firewall with no logon" an. wie kann ich dies im Code realisieren?
Ich hoffe jemand hat eine Idee
Bruß
Bernd
Kommentar von Luet am 11.02.2007 um 20:58
Hallo,
sehr guter Tipp :-)
Aber wie baut man folgendes ein:
Ich möchte die Attribute der Dateien auf dem Server ändern.
Welcher Profi ist im Stande, das mit diesen Tipp zu realisieren?
Danke für Hilfe
luet
Kommentar von Boris Risker am 07.02.2007 um 13:46
Hallo zuammen,
bei mir funktioniert der Code irgendwie nicht richtig, genau genommen das Directory Auflisten.
Wenn ich meine Access-Anwendung mit dem Code starte, kriege ich eien richtige Liste von DEatien auf meinem FTP-Server. Wenn ich allerdings dann eine Datei lösche oder hinzufüge und dann nochmal das Auflisten starte, so zeigt er die alte Liste ! D. h. er berücksichtigt nicht die Ab-/Zugänge ... wenn ich dann nochmal die Access-Anwendung schließe und wieder öffne, zeigt er die Liste richtig ...
Bitte kann mir einer helfen ??? das wäre echt wichtig für mich ...
Danke im voruas,
Boris
Kommentar von Jochen.Martens am 22.12.2006 um 08:31
Wenn ich das FTP mit einem Proxy Server benutze, wird die Verbindung zwischendurch relativ schnell abgebrochen. gibt es eine Möglichkeit eine minimale Verbindungszeit einzustellen?
Gruß
Jochen
Kommentar von Suter Andreas am 21.12.2006 um 23:56
Feher von Ingo Dormann am 01.02.2006 um 14:42
Aabe das gleiche mit win XP Home
Hat jemand eine lösung
Kommentar von Ingo Dormann am 01.02.2006 um 14:42
habe das gleiche Problem wie bei 'Von nervebehale am 15.07.2005' - die Adressen von Proxy und FTP-Server sind korrekt (ping), hOpen = '13369348' aber hConnection = '0' d.h. "Fehler beim Verbindungsaufbau" und mit WS_FTP geht alles ohne Probleme! - Wäre schön, den richtigen Tipp zu bekommen ;-)
Kommentar von Stefan Kaumeier am 14.11.2005 um 13:44
Was tun, wenn FTPGetFileA ohne Fehler durchläuft, aber im Anschluss keine Datei auf dem lokalen Rechner zu finden ist.
FTPPutFileA funktioniert. Habe schon seit Stunden alles mögliche probiert - ohne Erfolg. Kann es sein, dass die Date im Cache hängt und nicht geschrieben wird.
Für einen heißen Tipwäre ich recht dankbar.
mfg
SK
Kommentar von CeVau am 09.11.2005 um 21:31
Oioi
funzt super auf XP/VB5 mit den Änderungen von
=> Alex am 10.06.2004 um 09:57
CeVau
Kommentar von nervebehale am 15.07.2005 um 01:26
Hallöchen!
Der Source funzt bei mir zuhause ja ganz Prima! Aber ich muß über einen Proxy von der Firma aus Arbeiten. Von diesem Proxy/Firewall habe ich eine Extra Adresse die ich auch dementsprechend bei "'### Für den Proxybetrieb" eingepflegt habe. Leider funzt das aber nicht, warum?
Nutze ich z.B. WS_ftp oder etwa filezilla und gebe die Adresse unter Proxy ein so funzt das. Warum nur nicht im Progcode HEUL.
Kann mir da jemand weiterhelfen ?????
Herzliche Grüße
nervebehale
Kommentar von Joachim Siebert am 07.07.2005 um 11:01
Script läuft fein ...
Hat jemand eine idee, wie ich die FTP Detail mit loggen kann? Ich benötige eine logfile der up und downloads.
Die Function gibt ja soviel nicht her ...
Call InternetGetLastResponseInfo(Inf, vbNullString, l)
Jemand eine idee ... ?
Joachim
Kommentar von Marko am 30.03.2005 um 10:16
Hallo,
hat denn schon jemand eine Möglichkeit gefunden, wie man die Rechte der upgeloadeten Dateien ändern bzw. diese gleich beim Upload angeben kann ?
Kommentar von Janine am 21.01.2005 um 10:40
Hallo @ll,
Bei funktioniert es nicht so richtig. Ich benutzte den FTP um zwischen Client(normale Workstation) und Host (AS/400 "Großrechnersystem von IBM) Dateien zu uploaden/downloaden.
Mein Problem ist das ich nicht auf alle Bibliotheken auf der AS/400 zugreifen kann. Ich kann die Verzeichnisse absolut nicht wechseln ohne das er mir einen Fehler (5) bringt.
Könnte mir bitte jemand helfen! Ich verzweifle sonst noch ganz.
Danke und Gruß Janine
Kommentar von Reinhard am 26.11.2004 um 16:38
Hallo condi
Danke für deine Antwort.
Wie wird eine ftp-verb. via ssh getunnelt?
Reinhard
Kommentar von condi am 21.11.2004 um 20:53
nö, sftp geht nicht. ist ein komplett anderes protokoll - kannst aber einen normale ftp-verb. via ssh tunneln.
Kommentar von Reinhard Bertschler am 04.10.2004 um 09:56
Kann ich auf diesem Weg auch eine sichere FTP Verbindung herstellen (SFTP).
Besten Dank im voraus.
Reinhard
Kommentar von Alex am 12.08.2004 um 15:30
@Von Vulvo
The solution is posted from me 3 post before =)
Now a translation into english: (Hope you will understand it ;-)
Hi,
I found a logical error in this program..
The code is written for an absolute path but there is only the relative path available.
Now you have to posibilities to correct this:
- 1 write all for abolute
- 2 write all for relative
I like relative more so i have choosen the second posibility.
Here are the changes in the source:
Private Sub Command5_Click()
'...
' Instead of Label1.Caption = FTP_SERVER & "/"
Label1.Caption = "/"
'...
End Sub
Private Sub List1_DblClick()
'...
' Instead of If Label1.Caption <> FTP_SERVER & "/" Then
If Label1.Caption <> "/" Then
'...
End Sub
Private Function chFDir(fDir As String) As Boolean
'...
' delete: fDir = Mid(fDir, Len(Label10.Caption) + 1, Len(fDir) - Len(Label10.Caption))
'...
End Sub
For question etc. write me an e-mail:
activevb_de_FTP.20.Taube@spamgourmet.com
Don't panic the emailadress works fine.
mfg Alex
Kommentar von Fulvio am 12.08.2004 um 14:57
i can't create a remote directory, i can only remove... can you help me ?
Kommentar von Da-Freak am 10.06.2004 um 10:57
Vielen dank Alex funktioniert wunderbar =D THX
Kommentar von rambodieschen am 10.06.2004 um 10:42
Jetzt fehlt nur noch eine Downloadfortschrittsanzeige + downloadgeschwindigkeit. Ein Abbruch Button und das der download wieder fortfährt.
Mal gucken ich schlag mich durch die unkommentierte Codewüste durch und schreibe hier sobald ich etwas neues dazu programmiert habe.
PS geil danke für den Tip gegen den Laufzeitfehler 5. Super work.
Kommentar von Alex am 10.06.2004 um 09:57
Hi,
Hab den Denkfehler in dem Programm gefunden..
Der Code ist für den absoluten Pfad geschrieben, jedoch liegt nur der relative Pfad vor.
Jetzt gibt es 2 Möglichkeiten entweder ganz auf absolut oder ganz auf relativ umstellen.
Ich finde relativ schöner also hier die kleinen Eingriffe:
[Code]
Private Sub Command5_Click()
'...
' Anstatt Label1.Caption = FTP_SERVER & "/"
Label1.Caption = "/"
'...
End Sub
Private Sub List1_DblClick()
'...
' Anstatt If Label1.Caption <> FTP_SERVER & "/" Then
If Label1.Caption <> "/" Then
'...
End Sub
Private Function chFDir(fDir As String) As Boolean
'...
' löschen: fDir = Mid(fDir, Len(Label10.Caption) + 1, Len(fDir) - Len(Label10.Caption))
'...
End Sub
[Code]
Bei Fragen etc. einfach ne Mail schreiben...
mfg Alex
Kommentar von Oliver am 16.05.2004 um 15:10
Hallo,
genau an der selben Stelle wie da-freak bekomme ich einen Laufzeitfehler 5 wenn ich in ein Unterverzeichnis wechseln möchte, oder wieder zurück.
Bei allem was mit Verzeichnissen zu tun hat merke ich eben.
Egal ob wechseln, anlegen, umbenennen etc..
Private Function chFDir(fDir As String) As Boolean
Weis einer was das ist und wie man diesen Fehler behebt?
Cu
Kommentar von da-freak am 12.05.2004 um 18:04
Ich hab da ne Problem.
Wenn ich ein Untverzeichnis erstelle und in diesen unterordner eine datei hochladen will kommt ne error.
es muss an dieser zeile liegen
fDir = Mid(fDir, Len(Label10.Caption) + 1, Len(fDir) - Len(Label10.Caption))
kann mir jemand helfen
mfg Da-Freak
Kommentar von Raul am 29.04.2004 um 23:11
hallo.
ich hab das script ausprobiert.
soweit so gut, habe mich zu einem ftp verbunden, und versucht eine datei hochzuladen, jedoch vergebens.
es kommt eine fehlermeldung "Laufzeitfehler '5'"
dann habe ich im vb6 ma des ausgeführt und es wird ein fehler angezeigt bei
Private Sub Form_Load()
das is ja da, wo die ftp logindaten reingeschrieben werden.
im progg sind 3 fehler:
beim ordner erstellen kommt laufzeitfehler
wenn man eine datei hochladen will kommt laufzeitfehler
wenn man manche ordner betreten will, kommt die meldung "Ordner nicht vorhanden" obwohl er da ist und wenn man da ok lickt kmmt wiederum laufzeitfehler
nun meine frage, könnten sie es fixen? wäre wichtig, denn das tool is genial....
würd mich über antworten freuen, danke
Kommentar von Ansgar Walter am 15.02.2004 um 14:12
Hallo,
ein toller Tipp!
Ich habe es in eine MS-ACCESS-Anwendung übernommen
und es hat auf Anhieb funktioniert!
Es könnten zwar noch ein paar mehr Kommentare und sinnvolle
Variablennamen (z.B. strStatus statt aa in GetStatus)
verwendet werden, aber dennoch vielen Dank!
Gruss AW
Kommentar von luet am 13.02.2004 um 14:49
Hallo, toller Tipp !!
Was mich besonders interressiert ist, wie man über einen Proxy-Server das Ganze händelt. Du hast es zwar im Code kurz angefangen aber nicht so ausführlich, dass ich damit was anfangen kann . Es wäre schön könntest Du diesen Tipp dahingehend erweitern !
Ich würde mich sehr freuen, wenn Du Dich mal bei mir meldest, danke. :-)
luet
Kommentar von wchai am 26.01.2004 um 03:58
NO
Kommentar von mcd-datteln am 18.12.2003 um 11:57
Erst einmal SUPER Tipp!
Ich nutze diese variante schon etwas länger! Doch jetzt habe ich Probleme mit dem Upload und Download ( Fehler: Übertrgunsfehler)! Die Datenbank die ich mit dieser Variante Up- / Downloade ist mit der Zeit gewachsen (6 MB). Gibt es eine Möglichkteit einzustellen, wie lange die Vernindung gehalten werden soll oder die grösse?
Oder habe ich die Möglichkeit die Datei zu zippen und dann uploaden + auf dem Server entpacken?
Besten Dank shon einmal im vorraus...
Kommentar von micha am 26.11.2003 um 17:05
hallo, ich moechte lediglich ein paar files, die in einem string-array stehen auf einen server schieben. dass die o.g. loesung ideal ist und besser als das alte inet-control liegt auf der hand. gibt es eine "abgespreckte version" die lediglich die funktionalitaet anbietet ?
gruZZ micha
Kommentar von Juergen am 11.11.2003 um 10:03
Hallo!
Wie kann ich gliech nach demm verbinden in einen bestimmten unterortner wechsel?
Habe ein Prog. das die nach einwahl die Dyn-IP auslest und in eine Testdatei schreibt. Bis jetzt übertrage ich diese Datei Stüntlich mit dem Prog "ftp Voyager" auf einen ftp.
Wäre schön wenn ich das an mein DYN Prog anhängen könnte?
Kommentar von Viktor am 30.10.2003 um 13:17
hallo,
bei mir klappt das tool ganz super.
jedoch beim download.. kann man das programm nicht benutzen, was kann ich dagegen tun?
Gibts da ein befehl wo der den speed anzeigt ? oder wie viel er grade schon gedowloaded hat ?? bitte um hilfe :)
Kommentar von Andreas am 20.05.2003 um 10:08
Hallo,
ich würde das Programm in einer Firewall Umgebung gerne umsetzen. Wir haben hier ein Socks Cleint (Sockscap32) mit dem ich durch die Firewall durchkomme. Zwecks eines täglichen automatisierten FTP Uploads würde ich aber gerne dieses Programm umsetzen. Nur wie und wo kann ich hier die Angaben zum Tunneln der Firewall eingeben ? (quasidas vorherige Starten des Socks Programm wenn ich es händisch mache...)
Gruss
Andreas
Kommentar von Nicht-Durch-Blicker am 07.05.2003 um 23:20
Gott welcher FR34K hat das geschrieben?
Hast du zuviel Zeit oder so?
Kommentar von Erdal am 11.04.2003 um 14:45
Hallo,
ich bin ein Neueinsteiger bei VB. Ich programmiere im Rahmen eines Praktikums kleine Programme für betriebliche Anwendungen. Momentan soll ich ein ftp Programm programmieren. Habe als Quelle ur ein Buch, indem ftp-Download nur mit diesem inet-Steuerelement beschrieben wird. Um es kurz zu fassen, kann ich Ihnen mein Code schicken, so dass Sie mal einen Blick drüber werfen, was daran falsch ist, da es nicht funktioniertt?
Gruß
Kommentar von Nadine am 03.04.2003 um 15:18
Hallo Leute,
hab da mal ne Frage, kann man hierbei auch irgendwie einstellen, das man einen Passiven Transfer benutzen möchte?
Thanks
Kommentar von jaCz am 21.03.2003 um 13:50
AN ALLE:
Fragen würde ich im VB5/6-Forum stellen, dort werden sie professioneller beantwortet!
Kommentar von Raller am 18.03.2003 um 15:31
Hat jemand schon rausgefunden, welche Art von Proxy-Einstellung man machen muß?
Gruß
Raler
Kommentar von flychen am 14.02.2003 um 08:26
Wie man den FTP Port ändert habe ich nun endlich herausgefunden :)
Einfach diese Zeile mit in den Declarartionsteil:
Const INTERNET_DEFAULT_FTP_PORT = 22 ' je nachdem auf welchen port man connecten möchte
' und bei Private Sub Command5_Click()
' INTERNET_INVALID_PORT_NUMBER ersetzen durch: INTERNET_DEFAULT_FTP_PORT
mfg
flychen
Kommentar von fly am 01.02.2003 um 14:13
wie kann ich die ftp daten,die benutzt werden sollen, aus einer *.txt auslesen lassen? also nicht wie hier fest im code verwendet
Kommentar von Dave am 10.12.2002 um 17:24
geil! einfach geil! und bestimmt viel arbeit!
Kommentar von Stefan am 22.10.2002 um 15:34
Wie kann ich denn den FTP-Port ändern? Ich möchte nicht auf Port 21 zugreifen sondern auf Port 65 (Ist ein Sonderfall, ich weiß)
Kommentar von TheDAP am 21.08.2002 um 22:17
aaalso ich hab nen kleines prob: kann ich irgendwie feststellen ob der ftp-server resumed downloads unterstützt? bin für jeden tipp dankbar :)
Kommentar von Heini am 25.07.2002 um 11:24
hallo leutz...
ich find das tool echt genial, wenn man z.b einen bittet was zu senden, aber nicht in der lage sind problemlos ne ftp verbindung zu mit erstellen.. für windows xp hab ich es schon im xp design umgewandelt.. nur eine frage hab ich noch... wenn man dateien sendet, die was groß sind.. isses auch möglich nen progressbar hinzumachen, um zu sehen wie weit der transfer ist !?
mfg. Heini
Kommentar von BlaseHase am 03.07.2002 um 13:56
Zu 1 (Stephan) :
Und zwar, unter dem Link : http://www.ghcif.de/coding/sources/vb/ftpsample.zip
Ist ein Source-Code für einen Server und einen Clienten ! Viel Erfolg, der BlaseHase
Kommentar von Luet am 02.07.2002 um 12:00
Unter Win 98 + ME funzt der Tipp gut .
Aber warum läßt sich unter Win 2000 keine Verbindung aufbauen ??
Brauche dringend Hilfe!
Danke
luet
Kommentar von philip am 20.06.2002 um 21:02
Hi,
ich will den FTP-Client nutzen um Files auf meinen web-Server hochzuladen. Jedoch wird mir immer ein "Fehler beim Verbindungsaufbau" zurückgegeben.
Ich habe die Einstellungen mit cute-ftp geprüft ob es daran liegt. Aber da funktionierts. Kann mir dabei jemand helfen. Zur Info: Ich benutze Win 2k.
thx philip
Kommentar von Sebastian am 13.05.2002 um 16:38
Funktioniert das prog auch mit XP Professional ?? Auf meinem PC mit XP Home funzts, auf dem eines Freundes der XP Professional hat klappt es nicht, der Verbindungsaufbau kommt nicht zustande ? Woran kann das liegen ?
Kommentar von Gybrush am 20.03.2002 um 17:34
HALLO
ich möchte den speed commander als downloadmanager nutzen
Wie stelle ich eine verbindung zu einem ftp-server her um im Netz down- oder uploaden zu können?
Please, help me!
Mfg
Gybrush
Kommentar von UdoH am 28.02.2002 um 11:04
Hallo. Ich würde dieses Tool gerne zum Filetransfer im lokalem Netz bzw. über Router einbinden. Wer hat dazu eine Idee?
Kommentar von Ludger am 20.02.2002 um 00:09
Proxy, das leidige Problem. Ich programmiere dieses FTP jetzt damit es auf mehreren, mir unbekannten Rechnern läuft. Leider sind unter diesen auch Proxies - und ich habe keine Ahnung, wie mit diesen umzugehen. wer kann helfen - was gebe ich dort ein, was muss ich wissen. Was sagt mir "internes Linux-Gateway" (als PC jedoch normales NT)
Herzlichen Dank
Kommentar von Andy am 15.02.2002 um 13:13
Wer lesen kann ist klar im Vorteil, schau dir Notiz Nr.25 an, das könnte dir helfen ;)
Kommentar von AndiD am 03.02.2002 um 15:43
Ich bekomme keine Verbindung über den AVM Ken-DSL Proxy. Als Proxy hab` ich im Code folgendes angegeben:
Proxy = "ftp://192.254.92.135:2121"
Hab` ich noch was vergessen, oder woran kanns noch liegen...
Kommentar von Marc Reichelt am 01.02.2002 um 23:19
DYNAMISCHE IP-ADRESSE!!!
Hi, an alle!!!
-- Weiter unten hab ich geschrieben, dass ich meine dynamische IP immer wieder via FTP hochladen muss, doch dies erwies sich als sehr schwierig.
Wer keine Lust auf den umständlichen Kram hat, kann sich ganz einfach kostenlos (und OHNE Werbung!!!) bei www.dyndns.org anmelden.
Dort kann man auch Programme downloaden, die automatisch beim Verändern der IP die neue IP dem dyndns-server vermitteln (man muss also nach der Einwahl ins Internet nur zwei Programme starten:
Den Server und das IP-Programm.
Ich hoffe, ich konnte einigen helfen!
www.marcreichelt.de
Kommentar von Stephan am 16.01.2002 um 09:48
Ich benutze das Prog zum kommunizieren mit einer Unix-Kiste.In der Liste wird auch die Struktur der Platte Eingelesen aber ich kann mit DblClick nicht in die Unterverzeichnisse navigieren. Habe beim Debuggen festgestellt das die Schleife aufgrund FileList(List1.ListIndex).dwFileAttributes(=0) = FILE_ATTRIBUTE_DIRECTORY(=16) abgewiesen wird. Was kann ich ändern???
Danke im voraus.
Kommentar von Frank am 14.01.2002 um 16:44
Wie kann ich die Rechte für übertragene Dateien ändern? Ich schicke mit dem Progi bestimmte Dateien an eine Unix-Kiste und möchte für diese übertragenen Dateien die Schreib-, Lese- und Zugriffsrechte ändern. Unter Unix macht man das z.B. mit chmod 666. Doch wie gehts mit "wininet"? Hilfe !!! Dringend!!! Danke!!!
Kommentar von Stephan am 14.01.2002 um 12:10
Kann ich mit diesem Projekt auch mit einer Unix-Maschine kommunizieren?
Habe Adresse Name und Passwort.
Danke für die Antwort.
Kommentar von Martin am 27.12.2001 um 13:11
an DANIEL: Wegen dem Problem, dass er aus dem CACHE laedt:
Machs so dann gehts.
Public Const INTERNET_FLAG_RELOAD = &H80000000
Public Const INTERNET_FLAG_KEEP_CONNECTION = &H400000
Public Const INTERNET_FLAG_NO_CACHE_WRITE = &H4000000
Public Const INTERNET_FLAG_DONT_CACHE = INTERNET_FLAG_NO_CACHE_WRITE
Result = FTPGetFile(hConnection, sFile, dFile, True, INTERNET_FLAG_RELOAD, Transfer Or INTERNET_FLAG_DONT_CACHE, 0)
Result = FTPPutFile(hConnection, sFile, dFile, Transfer Or INTERNET_FLAG_NO_CACHE_WRITE, 0)
Kommentar von ANONYMOUs am 12.12.2001 um 22:33
Wie mache ich es, dass
die Datei "C:...1.txt"
beim Starten des Programms automatisch auf dem FTP Server gespeichert wird?
Kommentar von eclere am 28.11.2001 um 00:33
hallo,
wie kann ich denn damit einen ordner wechseln? ich bekomm das leider nicht raus.
gruss eclere
Kommentar von Robert am 23.11.2001 um 08:52
Hallo,
Kann mir jemand sagen, ob es eine relativ einfache Variante gibt Ordner inkl. Unterordner zu löschen ? Oder muß ich mich durch jeden Ordner hangeln und von der untersten Ebene anfangen die Ordner/Dateien zu löschen.
Besten Dank für die Antworten.
Robert
Kommentar von Jürgen Stetter am 15.10.2001 um 12:31
Hallo!
Mit FtpFindFirstFile liste ich den Verzeichnisinhalt auf.
Da der Verzeichnisinhalt recht groß ist, gebe ich eine Filter an.
Trotzdem scheint mir, dass der Gesamte Inhalt transferiert wird und die Filterung erst später erfolgt. Die Wartezeit ist sehr groß.
Kommentar von Mathias Böttcher am 11.10.2001 um 07:29
Hat sich erledigt.
Haut prima hin (hat mich 3 Stunden gekostet).
Trotzdem danke!
Gruß
Mathias
Kommentar von Mathias Böttcher am 09.10.2001 um 15:52
Hi,
ich möchte gerne das Scrip so ändern, daß ich beim Einwählen auf dem Server in einem Unterverzeichnis, welches ich vorher festlegen will, lande.
Ich aber nicht auf die Hauptebene gelange (als Sicherheit, damit ich nicht versehendlich die aktuellen Daten lösche).
Danke für Eure Hilfe.
Gruß
Mathias
Kommentar von YuriPrime am 29.08.2001 um 13:27
Hi, ich schaffe es nich, dass ich es über Proxy (Jana 1) zum laufen bringe... :(
'### Für den Proxybetrieb
Proxy = "...."
hOpen = InternetOpen(FTP_UAgent, INTERNET_OPEN_TYPE_PROXY, _
Proxy, vbNullString, 0)
was muss ich schreiben, wenn mein server bsp. super heisst ?? (muss ich 1080 für socks oder 8080 für http schreiben?) ich bitte um eine antwort
Kommentar von Lars Schröder am 18.08.2001 um 20:27
Ich finde das beispiel ist gelungen !
Leider blockiert das System in der Routine
bis der File runtergeladen ist. Schade ! Wer hat da eine Lösung.
Gruss Lars
Private Sub GetFile(ByVal fDir$, ByVal fFile$, ByVal lFile$)
Dim Result&
Dim NumberOfBytes&
lFile = lFile & "/" & fFile
Call chFDir(fDir)
MousePointer = vbHourglass
StatusText ("Lade Datei...")
Result = FtpGetFile(hConnection, fFile, lFile, 0, _
INTERNET_FLAG_RELOAD, Transfer, 0)
Call GetStatus
MousePointer = vbDefault
If Result = 0 Then MsgBox ("Übertragunsfehler")
End Sub
Kommentar von Guido Fischer am 03.08.2001 um 18:30
@Marc Reichelt
Tolle Idee :-) Läuft bei mir schon seit über einem Jahr erfolgreich auf jetzt 4 Domains ;o)
Ich hab noch einen drauf gesetzt ... ich kann meine Adressen Termine und meinen Anrufbeantworter so wie Faxe übers Internet abrufen *gg*
@Programmer
Geil! Den Source tu ich mir genauer an denn das Inet Steuerelement hab ich gerade ARG verflucht.
Gruß, Guido
Kommentar von Andreas am 03.08.2001 um 09:51
Ich bekomm unter NT4 SP6 keinen Connect zum FTP-Server, unter 2000 ist das kein Problem. Was muss ich machen, damit das auch unter NT4 laeuft ?
Kommentar von tom meier am 31.07.2001 um 12:06
das bsp. fand ich sehr hilfreich und erspart mir viel arbeit! hier noch ein tip:
falls avm ken als proxy im netz läuft, muß man port 2121 beim proxy einstellen. z.Bsp.: Proxy = "ftp=ftp://192.168.0.98:2121"
Kommentar von Marc Reichelt am 11.07.2001 um 17:00
Hallo an alle!
Ich habe vor kurzem ein FTP-Server-Programm (namens Personal FTP) auf meinem Programm installiert, habe allerdings eine dynamische IP und ich bin auch nicht die ganze Zeit online.
Die Aufgabe, die IP jedes Mal erneut dem Benutzer mitzuteilen, habe ich ganz elegant gelöst:
Ich habe einfach ein kleines Prog mit einem Inet-Control geschrieben, das jede Minute die IPs abfragt.
Sobald die dynamische Internet-IP existiert, nimmt er diese, schreibt sie in eine Datei "IP.txt" auf dem Computer und läd sie via FTP an einen festen Webspace von mir (in diesem Fall Tripod).
Danach startet es automatisch meinen FTP-Server per Shell-Funktion.
Das Prog funzt schon komplett, bis auf eine kleine Sache:
Die Datei IP.txt wird anscheinend nicht hochgeladen!!!
Ich wäre sehr dankbar für die Lösung des Problems, auf Anfrage kann ich auch den Sourcecode zuschicken.
Wenn das Problem gelöst ist, werde ich das Programm weiter verbessern, sodass man vor dem Ausloggen nur noch einen Button drücken muss, und schon wird eine neue Datei IP.txt hochgeladen, in der allerdings steht, dass der Server momentan nicht erreichbar ist.
Kommentar von Visual Sonic am 03.07.2001 um 11:15
Inet-Cache
läßt sich variabel per Parameter einstellen:
- RemoteCache y/n
- LocalCache y/n
- Sizes...
schaut in die MSDN Library !
Kommentar von Visual Sonic am 03.07.2001 um 11:12
"Dynamische IP" und FPT Server
nichts einfacher als das: da private Leute oftmals kaum eine statische IP zur Verfügung haben und doch einen Serverbetrieb haben möchten, gibt es einen kleinen Trick: die dynamische IP muß umgewandelt werden (translated). Aus der Nummernfolge machen wir einen String, der immer gleich bleibt (registriert) und sich damit leicht merken läßt. Deine dynamische IP muß bei jedem Neustart einer DFÜ-Session diesem String seine Identät erzählen (update). Super einfache Services erleichtern das - ohne große Kenntnisse. Melde Dich bei http://www.dyndns.org/ an ... und DL Dir das kleine Programm, das bei jeder neuen DFÜ-Session dort Deine IP einträgt.
Demnach gibst Du dem User nur Deine dnydns.org URL. Er wird automatisch auf Deinen "virtuellen Server" verbunden.
Kommentar von Daniel am 18.06.2001 um 12:44
TOLL, wie schnell man hilfe bekommt hier !!!!
Kommentar von Goetz Reinecke am 18.06.2001 um 10:59
Hallo Daniel, ja das wäre nett, dann wäre es endlich einmal dokumentiert, ich komme leider nicht dazu, danke. Schicks einfach an meine Email.
Grüße
Götz
Kommentar von Goetz Reinecke am 18.06.2001 um 10:57
Hallo Daniel, ja das ist in der Tat ein Problem. Die Wininet cached die Daten für ca. 30 Minuten. Sie holt in dieser Zeit nicht die geänderten Daten sondern das was sie im Cache findet. Habe bis jetzt noch keine konkrete Lösung dafür gefunden. Nehme aber an, daß sich das über irgendein Flag lösen läßt, bzw. es eine Funktion in der Wininet gibt um dieses Cache zurückzusetzen
Grüße
Götz
Kommentar von Daniel am 18.06.2001 um 10:54
Noch was , ich hab den Code "studiert" und alles beschriftet, soweit ich konnte, ich kann es gerne jedem schicken, müsst nur ne Mail schreiben !!!!!
Kommentar von Daniel am 18.06.2001 um 10:51
Hallo Ihr!! SUPER SITE !!!
aber nun mein problem :
ich habe eine TXT Datei auf meine PC erstellt, in der steht z.b. "HALLO VB PROGRAMMER", die schicke ich auf den Server. Dann lösche ich die Datei Lokal, und lade sie wieder herunter. Jetzt das komische, wenn ich in die Datei nun "GEHT NICHT" schreibe, und das gleiche nochmal mache, und sie dann anschaue, steht "HALLO VB PROGRAMMER" in der TXT Datei, egal ob ich sie gelöscht hab Lokal, oder auch auf dem Server, bei jedem erneuten Download dieser Datei steht, egal was ich nun hineinschreibe, "HALLO VB PROGRAMMER" drinnen !!!
Die Datei wird glaub ich sowas wie im Buffer gespeichert, kann man dieses Problem irgendwie lösen ?????
Danke im voraus !!!
Kommentar von Philipp Stephani am 05.05.2001 um 22:10
Findet Ihr nicht, dass dieser Code etwas lang ist? Man kann ihn zwar verwenden, aber hat überhaupt nicht verstanden, was die Befehle bedeuten! Ein paar Kommentar wären auch nicht schlecht.
Kommentar von Adrian Föder am 29.04.2001 um 14:30
Warum setzt ihr nicht die msinet.ocx als Control ein, d.h. ihr nehmt den Sau-komplizierten API-Verweis.
Das ist zwar ganz schön für die, die sich das Ding runterladen, eine EXE draus machen und sagen "Ich habe einen eigenen FTP-Client gemacht".
Aber um die Funktionsweise nachzuvollziehen ist das ziemlich Sch***..
Ist übrigens bei allen Euren Projekten so...
Gruss,
Adrian
Kommentar von daniel am 26.04.2001 um 13:29
hallo, kann ich auch durch eine firewall uebertragen?
wenn ja, wie?
danke.
Kommentar von jameskirk am 06.04.2001 um 15:02
Hätte da mal ne frage: wie kann ich es als option realisieren alle unterverzeichnisse mitzukopieren! Für lösungsansätze wär ich sehr dankbar...
mfg
Kommentar von FrankD am 04.04.2001 um 09:12
Tolles Tool und fast alles funktioniert, nur beim FTP-File löschen habe ich probleme. Ich möchte alle Dateien in einem FTP-Verzeichnis löschen, aber ich kann immer nur die 1. löschen. Muß ich etwa nach jedem einzelnen FTPöschvorgang das verzeichnis komplett neu einlesen, um dann die nächste Datei löschen zu dürfen???
Kommentar von ToXic Lord am 14.03.2001 um 21:45
Ihr seid witzig! Wie lange hat man an einer Linux installation? Paar Stunden! Und wie glaubt ihr denn, dass ein 15 jähriger (ok, 15 is nicht wichtig..), der kaum VB kann, sich gleich mit stmp, ftp und www-diensten auskennt?
Kommentar von Franz Rieder am 26.02.2001 um 11:58
Wie kann ich jetzt in ein bestimmtes Verzeichnis auf dem FTP-Server wechseln?
Kommentar von LuniX am 24.01.2001 um 14:38
StephanG, du kannst aber auch einen Sambar/Apache Server auf deinem Win32 (Windows 95/...) installieren und den als Webserver laufen lassen. Im Web ne weiterleitung auf deine änderende IP (mach ich mit einlog- und auslog-Perlskript (ändert jedesmal die index.html auf eine andere IP /ausweichandere fals nicht Online)... :-)
Kommentar von Robert K am 03.01.2001 um 15:08
I was looking for info about Wininet.dll. Many thanks!
Robert
Kommentar von Ralf Klinkert am 19.12.2000 um 10:36
Hallo Zusammen,
Ich kenne mich mit der API noch nicht so richtig aus und möchte gerne ein Verzeichnis auf dem FTP-Server angeben um mich mit dem Client direkt dahin zu verbinden. An welcher Stelleim Programm kann ich so etwas eintragen? Vielen Dank im Voraus!
Gruß Ralf
Kommentar von Sven Strickroth am 07.12.2000 um 14:46
Hi!
Ich suche eine VB-Quellcode, den man als FTP-Server nutzen kann.
Also nur ein Skript, dass die ankommenden FTP anfragen annimmt und dann auswertet (Benutzernamen prüft und dann Ordner freigibt.).
Kommentar von noname am 15.11.2000 um 16:06
Hallo StephanG,
installier auf einem 2. Rechner SuSE Linux 7.0 - Dort ist der Apache HTTP Server installiert.
Ohne große Vorkenntnisse kannst du dort eine Seite einbinden.
P.S. FTP hast du ebenso wie SMTP Funktionen
CU noname
Kommentar von j.jaballah am 05.10.2000 um 08:26
Hallo,
Mit diesem Tip habe ich die erste Erfahrung mit wininet.dll und FTP gewonnen und dabei hat sich bei mir die erste Frage gestellt und zwar wie kann ich via FtpPutFile(...) oder FtpCommand(...) von einem lokalen Rechner Client_1 eine lokale Datei loclFile_1 an eine remote Datei remoteFile_1 anhengen, remoteFile_1 ist auf einem Remote-Server
remoteServer_1?
Von dem Remote-Server habe ich die IP-Adresse und habe für einem bestimmten alle
Rechte (Die Remote-Datei möchte ich von vielen Clients benutzen lassen).
Gruß
J.J
Kommentar von Götz Reinecke am 30.09.2000 um 23:13
Hallo Stephan,
prinzipiell geht das, Du kannst dies zum Bsp. über die Winsock realiesieren.
Problematisch ist nur, daß wenn Du auch erreichbar sein willst, Du eine statische IP-Adresse brauchst, unter der andere Deinen Server erreichen können.
Hast Du diese nicht, mußt Du allen Interessenten bei jeder neuer Einwahl Deine IP mitteilen.
Kommentar von StephanG am 30.09.2000 um 23:00
Hallo! Bin 15 und heiße Stephan! ich möchte gerne meinen Computer als Internetserver verwenden. Wie geht dass? Kann ich eine art FTP Server mit VB machen?
..und eure Seite ist die BESTE!!!! Hab viel daraus gelernt!
Danke im Voraus!