要怎麼利用wininet.dll來做FTP相關的功能呢?下面相關部分可以參考看看,這邊主要是利用呼叫Win32API來做相關功能而.net framework中也有FTPClient相關的東西可以用,FTPClient的部分就請自行查詢MSDN嚕~之後有時間再來整理。
首先有些參考資料可以看看


下面是參考上面所提修改而來的code


Imports System.Runtime.InteropServices

Public Class cFTP

    ' Internet Session Handle (InternetOpen)
    Private _hInternet As Integer
    ' Internet Service Handle (InternetConnect)
    Private _hConnect As Integer

    Private _ServerName As String = ""
    Private _UserName As String = "anonymous"
    Private _Password As String = ""
    ''儲存是否需要密碼驗證的狀態
    Private _IsNeedPassword As Boolean = True
    ''儲存是否需要via Proxy
    Private _IsNeedProxy As Boolean = False
    ''儲存傳輸模式(ASCII or Binary (default to Binary)
    Private _TransferMode As Integer = FTP_TRANSFER_TYPE_BINARY

    Public Sub New()

    End Sub

#Region "Const"
    ' dwAccessType: 設定Internet連結的存取方式
    Private Const INTERNET_OPEN_TYPE_PRECONFIG As Short = 0
    Private Const INTERNET_OPEN_TYPE_DIRECT As Short = 1
    Private Const INTERNET_OPEN_TYPE_PROXY As Short = 3
    Private Const INTERNET_OPEN_TYPE_PRECONFIG_WITH_NO_AUTOPROXY As Short = 4

    ' dwFlags
    Private Const INTERNET_FLAG_FROM_CACHE As Integer = &H1000000
    Private Const INTERNET_FLAG_OFFLINE As Integer = &H1000000
    Private Const INTERNET_FLAG_MAKE_PERSISTENT As Integer = &H2000000
    Private Const INTERNET_FLAG_NO_CACHE_WRITE As Integer = &H4000000
    Private Const INTERNET_FLAG_ASYNC As Integer = &H10000000
    Private Const INTERNET_FLAG_EXISTING_CONNECT As Integer = &H20000000
    Private Const INTERNET_FLAG_PASSIVE As Integer = &H8000000

    ' nServerPort:設定Internet服務之通訊埠(port)
    Private Const INTERNET_DEFAULT_FTP_PORT As Short = 21
    Private Const INTERNET_DEFAULT_GOPHER_PORT As Short = 70
    Private Const INTERNET_DEFAULT_HTTP_PORT As Short = 80
    Private Const INTERNET_DEFAULT_HTTPS_PORT As Short = 443
    Private Const INTERNET_DEFAULT_SOCKS_PORT As Short = 1080
    Private Const INTERNET_INVALID_PORT_NUMBER As Short = 0

    ' dwService:設定Internet服務類型
    Private Const INTERNET_SERVICE_FTP As Short = 1
    Private Const INTERNET_SERVICE_GOPHER As Short = 2
    Private Const INTERNET_SERVICE_HTTP As Short = 3

    ' dwInternetFlags
    Private Const FTP_TRANSFER_TYPE_ASCII As Short = &H1S ' ASCII 模式
    Private Const FTP_TRANSFER_TYPE_BINARY As Short = &H2S ' Binary模式
    Private Const FTP_TRANSFER_TYPE_UNKNOWN As Short = &H0S ' 預設為Binary模式
    Private Const INTERNET_FLAG_TRANSFER_ASCII As Short = &H1S ' ASCII 模式
    Private Const INTERNET_FLAG_TRANSFER_BINARY As Short = &H2S ' Binary模式

    Private Const FILE_ATTRIBUTE_DIRECTORY As Short = &H10S
    Private Const FILE_ATTRIBUTE_ARCHIVE As Short = &H20S
#End Region

#Region "Win32API"
    

bauann@dotblog