有关wininet.dll声明问题,很简单但对不懂的我则很困难,在线20分钟解决即给分。

chendjin 2004-04-28 05:51:38
我想访问远端指定目录,通过FTP方式已经连接上了,如何取得当前绝对路,这很
重要,否则我不能向用户传递数据,请各位大虾看一下这样声明错在哪里:
Public Declare Function FtpGetCurrentDirectory Lib "wininet.dll" Alias "FtpGetCurrentDirectoryA" _
(ByVal hFtpSession As Long) As String


或则哪位能提供wininet.dll函数接口详细信息吗?多谢了,分不够再加!
...全文
409 点赞 收藏 19
写回复
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
chendjin 2004-05-01
为什么以前采用"FtpPutFile hConnection, "D:\YY.DOC", "XX.DOC",
FTP_TRANSFER_TYPE_BINARY, 2"此方式管用啦?
回复
online 2004-05-01
'把一个文件上栽到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
回复
supergreenbean 2004-04-30
MSDN上写的好象最后一个参数都是0的,除非使用了什么CallBack什么的
回复
chendjin 2004-04-30
好象2是与FTP_TRANSFER_TYPE_BINARY匹配使用,如果记错了,
supergreenbean(超级绿豆),最后两个参数意义解释一下,可以吗?
回复
supergreenbean 2004-04-30
那个例子里好像最后一个参数是 0 诶
回复
chendjin 2004-04-30
谢谢,再试过了,但上传不了,这样调用有问题吗:
FtpPutFile hConnection, "D:\YY.DOC", "XX.DOC", _
FTP_TRANSFER_TYPE_BINARY, 2
回复
supergreenbean 2004-04-30
看看这里的Examples - FTP Functions

http://www.mentalis.org/apilist/FtpGetCurrentDirectory.shtml
回复
chendjin 2004-04-30
online(龙卷风V2.0--再战江湖) ,试过了,lpszCurrentDirectory
返回""值, FtpGetCurrentDirectory 返回False值。
回复
supergreenbean 2004-04-30
呵呵,因为没有玩过类似的东西,所以我也不好说啦

你其他Ftpxxxxx的函数能用么?
回复
online 2004-04-30
'取得ftp当前的目录的名字
Public Declare Function FtpGetCurrentDirectory Lib "wininet.dll" Alias "FtpGetCurrentDirectoryA" _
(ByVal hFtpSession As Long, lpszCurrentDirectory As String, lpdwCurrentDirectory As Long) As Boolean
'lpszCurrentDirectory--存放目录名字的字符串
'lpdwCurrentDirectory--目录名字字符串的字节数
回复
chendjin 2004-04-30
预祝各位节日快乐!可惜俺还得实实在在过劳动节,不能休息了!
supergreenbean(超级绿豆),两种方法都试过了,都返回""值,
我问过了,对方用W2000系统,在d:\data目录下开了读写权限,
我原来实现过向UNIX传资料,可是转向W2000就不行了,借用你的
经验解释一下,可以吗?今晚在线到22:30分。
回复
supergreenbean 2004-04-29
声明如果是这样
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


先试试吧,具体我也没有试过
回复
chendjin 2004-04-29
to Sun_Jianhua(铁拳),copymemory 在当前问题下怎么用?先谢谢了。
回复
supergreenbean 2004-04-28
啊呀,写错了咯。其实我是想写As String的啦,不过写As Long也可以的
回复
铁拳 2004-04-28
因为它是一个缓冲区,在 vb 中得到的即是一个指向该缓冲区的指针,因此得到该指针后还要用 copymemory 来得到真正的数据。
回复
chendjin 2004-04-28
supergreenbean(超级绿豆),还在线吗?
回复
chendjin 2004-04-28
楼上的,能否解释lpdwCurrentDirectory 为什么是Long 而非String,
既然想要返回绝对路径,至少函数中有一个为String,可是一个没有,
我很糊涂了,能否解释,谢谢了。
回复
nik_Amis 2004-04-28
up
回复
supergreenbean 2004-04-28
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
回复
发动态
发帖子
网络编程
创建于2007-09-28

1469

社区成员

VB 网络编程
申请成为版主
社区公告
暂无公告