建议查看MSDN,还有什么比它更完整

解决方案 »

  1.   

    Option Explicit'########################################################################
    '##                                                                    ##
    '##                            FTPAPI声明                              ##
    '##                                                                    ##
    '########################################################################
    Public Const ERROR_NO_MORE_FILES = 18
    Public Const ERROR_INTERNET_EXTENDED_ERROR = 12003
     
    Public Const FTP_TRANSFER_TYPE_BINARY = &H2
    Public Const FTP_TRANSFER_TYPE_ASCII = &H1
     
    Public Const INTERNET_FLAG_PASSIVE = &H8000000
    Public Const INTERNET_FLAG_RELOAD = &H80000000
    Public Const INTERNET_FLAG_KEEP_CONNECTION = &H400000
    Public Const INTERNET_FLAG_MULTIPART = &H200000
     
    Public Const INTERNET_OPEN_TYPE_PRECONFIG = 0
    Public Const INTERNET_OPEN_TYPE_DIRECT = 1
    Public Const INTERNET_OPEN_TYPE_PROXY = 3
     
    Public Const INTERNET_INVALID_PORT_NUMBER = 0
     
    Public Const INTERNET_SERVICE_FTP = 1
    Public Const INTERNET_SERVICE_GOPHER = 2
    Public Const INTERNET_SERVICE_HTTP = 3Public Const MAX_PATH = 260
    Public Const NO_ERROR = 0
    Public Const FILE_ATTRIBUTE_READONLY = &H1
    Public Const FILE_ATTRIBUTE_HIDDEN = &H2
    Public Const FILE_ATTRIBUTE_SYSTEM = &H4
    Public Const FILE_ATTRIBUTE_DIRECTORY = &H10
    Public Const FILE_ATTRIBUTE_ARCHIVE = &H20
    Public Const FILE_ATTRIBUTE_NORMAL = &H80
    Public Const FILE_ATTRIBUTE_TEMPORARY = &H100
    Public Const FILE_ATTRIBUTE_COMPRESSED = &H800
    Public Const FILE_ATTRIBUTE_OFFLINE = &H1000Public Const INTERNET_DEFAULT_FTP_PORT = 21
    Public Const INTERNET_DEFAULT_GOPHER_PORT = 70
    Public Const INTERNET_DEFAULT_HTTP_PORT = 80
    Public Const INTERNET_DEFAULT_HTTPS_PORT = 443
    Public Const INTERNET_DEFAULT_SOCKS_PORT = 1080
    Public Type FILETIME
            dwLowDateTime As Long
            dwHighDateTime As Long
    End TypePublic 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
    '连接FTP服务器的操作函数'打开连接internet的会话
    Public 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
    'sAgent--要调用internet对话的应用程序名
    'lAccessType--请求的访问的类型,包括:
    'INTERNET_OPEN_TYPE_PRECONFIG---预配置(缺省)
    'INTERNET_OPEN_TYPE_DIRECT--直接指向internet
    'INTERNET_OPEN_TYPE_PROXY--通过代理服务器连接
    'sProxyName--如果lAccessType被设置为INTERNET_OPEN_TYPE_PROXY,该参数为
    '代理服务器的名字
    'sProxyBypass--包含一系列代理服务器地址的字符串
    'lFlags--会话的选项,可包括下列值:
    'INTERNET_FLAG_DONT_CACHE--不对数据进行本地缓冲或通过网关服务器缓冲
    'INTERNET_FLAG_ASYNC--当操作完成时,将同INTERNET_STATUS_REQUEST_COMPLETE
    '一起进行一个状态回调
    'INTERNET_FLAG_OFFLINE--只通过永久缓冲进行下载操作'打开一个根据连接类型的Internet连接
    Public 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
    'hInternetSession--函数InternetOpen()打开Internet对话返回的值
    'sServerName--要连接的服务器的名称或IP
    'nServerPort--该连接的Internet端口
    'sUsername--登录的用户帐号
    'sPassword--登录的口令
    'lService--要连接的服务器类型(这里是连接FTP服务器,连接的类型为常数INTERNET_SERVICE_FTP)'关闭Internet连接
    Public Declare Function InternetCloseHandle Lib "wininet.dll" _
    (ByVal hInet As Long) As Integer
    'hInet--InternetConnect()函数返回的值'文件查找操作'在FTP连接中查找一个文件。在调用此函数后取得第一个文件后,可以接着调用FtpFindNextFile()
    '获得下一个查到的FTP服务器上的文件。
    Public 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
    'lpszSearchFile--指向要搜索的文件名。可以通配符*.*的形式。
    'lpFindFileData--用于装载与找到的文件有关的具体信息
    'dwFlags--数据传输的方式,通常设置为0,(ASCII方式)'继续由FtpFindFirstFile()函数发起的文件搜索操作Public Declare Function InternetFindNextFile Lib "wininet.dll" Alias "InternetFindNextFileA" _
        (ByVal hFind As Long, lpvFindData As WIN32_FIND_DATA) As Long
    'hFind--FtpFindFirstFile()函数的返回值
    'lpvFindData--用于装载与找到的文件有关的具体信息'目录操作'改变FTP服务器的当前目录。
    Public Declare Function FtpSetCurrentDirectory Lib "wininet.dll" Alias "FtpSetCurrentDirectoryA" _
        (ByVal hFtpSession As Long, ByVal lpszDirectory As String) As Boolean
    'lpszDirectory--包含要到达的目录名。可以是相对的或绝对的路径。'在ftp服务器上创建目录
    Public Declare Function FtpCreateDirectory Lib "wininet.dll" Alias "FtpCreateDirectoryA" _
        (ByVal hFtpSession As Long, ByVal lpszDirectory As String) As Boolean
    'lpszDirectory--包含要创建目录的字符串,可以是一个相对路径或绝对路径'取得ftp当前的目录的名字
    Public Declare Function FtpGetCurrentDirectory Lib "wininet.dll" Alias "FtpGetCurrentDirectoryA" _
        (ByVal hFtpSession As Long, lpszCurrentDirectory As String, lpdwCurrentDirectory As Long) As Boolean
    'lpszCurrentDirectory--存放目录名字的字符串
    'lpdwCurrentDirectory--目录名字字符串的字节数'删除ftp服务器的一个目录
    Public Declare Function FtpRemoveDirectory Lib "wininet.dll" Alias "FtpRemoveDirectoryA" _
        (ByVal hFtpSession As Long, ByVal lpszDirectory As String) As Boolean
    'lpszDirectory--要删除的目录名称,可以是相对路径或绝对路径'文件操作'从ftp服务器上取得一个文件并保存在本地机器上,此函数包括了与从一个FTP服务器中读取一个文件
    '并在本地保存等操作有关的所有功能Public 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 Boolean
    'lpszRemoteFile--包含FTP服务器中要读的文件名
    'lpszNewFile--在本地机器中要创建的文件名
    'fFailIfExists--当为TRUE时,如果文件已经存在,则调用失败
    'dwFlagsAndAttributes--文件的属性
    'dwFlags--文件的传输方式可能包括下列值:
    'FTP_TRANSFER_TYPE_ASCII--使用可以将控制和格式信息转换到本地对应文件的ASCII传输方式
    'FTP_TRANSFER_TYPE_BINARY--使用把文件作为一个连续数据流传输的FTP图象传输方式,这种方式
    '不区别在文件内部数据结构之间的任何分界(如行结束的回车标记)
    'dwContext--要取回的文件的描述表标识符
          
    '把一个文件上栽到FTP服务器上。其中包括了要将一个文件上载到FTP服务器上所有的有关操作Public 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 Boolean
    'lpszLocalFile--要发送的文件名
    'lpszRemoteFile--在FTP服务器上要创建的文件名
    'dwFlags--文件的传输方式
    'dwContext--要取回的文件的描述表标识符'在FTP服务器上打开一个文件以进行读或写操作Public Declare Function FtpOpenFile Lib "wininet.dll" Alias _
            "FtpOpenFileA" (ByVal hFtpSession As Long, _
            ByVal sFileName As String, ByVal lAccess As Long, _
            ByVal lFlags As Long, ByVal lContext As Long) As Long
    'sFileName--要打开的文件名
    'lAccess--文件访问标记,可以是GENERIC_READ或GENERIC_WRITE
    'lFlags--文件传输方式(文本或二进制)
    'lContext--要打开的文件的描述表标识符'在FTP服务器上删除一个指定的文件
    Public Declare Function FtpDeleteFile Lib "wininet.dll" _
        Alias "FtpDeleteFileA" (ByVal hFtpSess
      

  2.   

    第一个问题可能是你的参数有问题如:用户名,密码等或者网络的问题.
    第二个问题中的lContext使用时是另一个过程产生的返回值.
    这个过程是InternetSetStatusCallback,它的使用时指定一个加调过程,
    在其它函数执行时加上它的返回值当参数,然后执行完成或失败时都调用那个
    过程并返回执行状态,具体状态可参考INTERNET_STATUS_CALLBACK.
    这个值与断点续传无关.