我想访问远端指定目录,通过FTP方式已经连接上了,如何取得当前绝对路,这很
重要,否则我不能向用户传递数据,请各位大虾看一下这样声明错在哪里:
Public Declare Function FtpGetCurrentDirectory Lib "wininet.dll" Alias "FtpGetCurrentDirectoryA" _
    (ByVal hFtpSession As Long) As String
或则哪位能提供wininet.dll函数接口详细信息吗?多谢了,分不够再加!

解决方案 »

  1.   

    BOOL WINAPI FtpGetCurrentDirectory(
    HINTERNET hConnect, 
    LPCTSTR lpszCurrentDirectory, //字符缓冲区
    LPDWORD lpdwCurrentDirectory);//字符缓冲区长度Public Declare Function FtpGetCurrentDirectory Lib "wininet.dll" Alias "FtpGetCurrentDirectoryA" _
        (ByVal lpszCurrentDirectory As Long,ByVal lpdwCurrentDirectory As Long) As Long
    详细信息看MSDN
      

  2.   

    楼上的,能否解释lpdwCurrentDirectory 为什么是Long 而非String,
    既然想要返回绝对路径,至少函数中有一个为String,可是一个没有,
    我很糊涂了,能否解释,谢谢了。
      

  3.   

    supergreenbean(超级绿豆),还在线吗?
      

  4.   

    因为它是一个缓冲区,在 vb 中得到的即是一个指向该缓冲区的指针,因此得到该指针后还要用 copymemory 来得到真正的数据。
      

  5.   

    啊呀,写错了咯。其实我是想写As String的啦,不过写As Long也可以的
      

  6.   

    to Sun_Jianhua(铁拳),copymemory 在当前问题下怎么用?先谢谢了。
      

  7.   

    声明如果是这样
    Public Declare Function FtpGetCurrentDirectory Lib "wininet.dll" Alias "FtpGetCurrentDirectoryA" _
        (ByVal hConnect As Long,ByVal lpszCurrentDirectory As Long,lpdwCurrentDirectory As Long) As Long
    那么
    dim s as string
    dim b(255) as byte
    dim length as long
    length=ubound(b)-lbound(b)+1
    if FtpGetCurrentDirectory (hFtp, varptr(b(0)),length)
       redim preseve b(length)
       s=strconv(b,vbunicode)
    end if声明如果是这样
    Public Declare Function FtpGetCurrentDirectory Lib "wininet.dll" Alias "FtpGetCurrentDirectoryA" _
        (ByVal hConnect As Long,ByVal lpszCurrentDirectory As String,lpdwCurrentDirectory As Long) As Long
    那么
    dim s as string *255
    dim length as long
    length=len(s)
    if FtpGetCurrentDirectory (hFtp,s,length) then
      s=left(s,length)
    end if
    先试试吧,具体我也没有试过
      

  8.   

    预祝各位节日快乐!可惜俺还得实实在在过劳动节,不能休息了!
    supergreenbean(超级绿豆),两种方法都试过了,都返回""值,
    我问过了,对方用W2000系统,在d:\data目录下开了读写权限,
    我原来实现过向UNIX传资料,可是转向W2000就不行了,借用你的
    经验解释一下,可以吗?今晚在线到22:30分。
      

  9.   

    '取得ftp当前的目录的名字
    Public Declare Function FtpGetCurrentDirectory Lib "wininet.dll" Alias "FtpGetCurrentDirectoryA" _
        (ByVal hFtpSession As Long, lpszCurrentDirectory As String, lpdwCurrentDirectory As Long) As Boolean
    'lpszCurrentDirectory--存放目录名字的字符串
    'lpdwCurrentDirectory--目录名字字符串的字节数
      

  10.   

    呵呵,因为没有玩过类似的东西,所以我也不好说啦你其他Ftpxxxxx的函数能用么?
      

  11.   

    online(龙卷风V2.0--再战江湖) ,试过了,lpszCurrentDirectory
    返回""值,  FtpGetCurrentDirectory 返回False值。
      

  12.   

    看看这里的Examples - FTP Functionshttp://www.mentalis.org/apilist/FtpGetCurrentDirectory.shtml
      

  13.   

    谢谢,再试过了,但上传不了,这样调用有问题吗:
    FtpPutFile hConnection, "D:\YY.DOC", "XX.DOC", _
    FTP_TRANSFER_TYPE_BINARY, 2
      

  14.   

    好象2是与FTP_TRANSFER_TYPE_BINARY匹配使用,如果记错了,
    supergreenbean(超级绿豆),最后两个参数意义解释一下,可以吗?
      

  15.   

    MSDN上写的好象最后一个参数都是0的,除非使用了什么CallBack什么的
      

  16.   

    '把一个文件上栽到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服务器的目录,并设置为ftp当前目录
        '再用FtpPutFile上载
        bRet = FtpPutFile(hConnection, szFileLocal, szFileRemote, _
         FTP_TRANSFER_TYPE_BINARY, 0)
    '选择文件的传输方式为ASCII方式
    FTP_TRANSFER_TYPE_ASCII'选择文件的传输方式为BINARY方式
    FTP_TRANSFER_TYPE_BINARY
      

  17.   

    为什么以前采用"FtpPutFile hConnection, "D:\YY.DOC", "XX.DOC", 
    FTP_TRANSFER_TYPE_BINARY, 2"此方式管用啦?