Foxtable(狐表)用户栏目专家坐堂 → 狐狸爸爸,请帮我看看这个有什么问题?


  共有6886人关注过本帖树形打印复制链接

主题:狐狸爸爸,请帮我看看这个有什么问题?

帅哥哟,离线,有人找我吗?
ttitt147
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:181 积分:1451 威望:0 精华:0 注册:2012/5/11 12:47:00
狐狸爸爸,请帮我看看这个有什么问题?  发帖心情 Post By:2013/1/27 10:08:00 [只看该作者]

调用InternetConnect拿不到句柄变量,要如何使用?

 

'ftp
'判断当前是否有活动会话
Public activeftp As Boolean
'当前会话句柄变量                      
Public connecttingno As Long
' 活动连接句柄变量                                  
Public connectinglink As Long                            

Public successflag As Boolean

'设置函数连接环境api
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
Public Const INTERNET_FLAG_PASSIVE = &H8000000          ' 被动
Public Const INTERNET_FLAG_PORT = &O0                   ' 主动

Public Const INTERNET_OPEN_TYPE_PRECONFIG = 0
Public Const INTERNET_OPEN_TYPE_DIRECT = 1
Public Const INTERNET_OPEN_TYPE_PROXY = 3

'连接服务端api
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
Public Const INTERNET_INVALID_PORT_NUMBER = 21

Public Const INTERNET_SERVICE_FTP = 1
Public Const INTERNET_SERVICE_GOPHER = 2
Public Const INTERNET_SERVICE_HTTP = 3

'打开并连接服务端会话
Public Sub connectftpserver(ByVal fserver As String, ByVal fuser As String, ByVal fps As String)
connecttingno = InternetOpen("FTP Control", 1, VbNullString, VbNullString, 0)
'保存当前活动连接的句柄
connectinglink = InternetConnect(connecttingno, "200.200.200.190", 21, fuser, fps, 1, 0, 0) '连接并取得句柄
If connectinglink = 0 Then
activeftp = False '标记为活动
shutftpserver
Else
activeftp = True
End If
End Sub

'关闭连接api
Public Declare Function InternetCloseHandle Lib "wininet.dll" (ByVal hInet As Long) As Integer
'关闭并结束服务端会话
Public Sub shutftpserver
If connectinglink <> 0 Then
InternetCloseHandle(connectinglink)
End If
connectinglink = 0
activeftp = False
End Sub

'上传api
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
Public Const FTP_TRANSFER_TYPE_ASCII = &H1
Public Const FTP_TRANSFER_TYPE_BINARY = &H2
'上传文件
Public Sub upload(ByVal cfile As String, ByVal hfile As String)
successflag = FtpPutFile(connectinglink, cfile, hfile, 2, 0)
End Sub

'下载api
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
Public Const INTERNET_FLAG_RELOAD = &H80000000
Public Const INTERNET_FLAG_KEEP_CONNECTION = &H400000
Public Const INTERNET_FLAG_MULTIPART = &H200000
'下载文件
Public Sub Download(ByVal cfile As String, ByVal hfile As String)
successflag = FtpGetFile(connectinglink, hfile, cfile, False, 0, 2, 0)
End Sub


 回到顶部
帅哥哟,离线,有人找我吗?
ttitt147
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:181 积分:1451 威望:0 精华:0 注册:2012/5/11 12:47:00
  发帖心情 Post By:2013/1/27 10:15:00 [只看该作者]

以下是引用ttitt147在2013-1-27 10:08:00的发言:

调用InternetConnect拿不到句柄变量,要如何使用?

 

'ftp
'判断当前是否有活动会话
Public activeftp As Boolean
'当前会话句柄变量                      
Public connecttingno As Long
' 活动连接句柄变量                                  
Public connectinglink As Long                            

Public successflag As Boolean

'设置函数连接环境api
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
Public Const INTERNET_FLAG_PASSIVE = &H8000000          ' 被动
Public Const INTERNET_FLAG_PORT = &O0                   ' 主动

Public Const INTERNET_OPEN_TYPE_PRECONFIG = 0
Public Const INTERNET_OPEN_TYPE_DIRECT = 1
Public Const INTERNET_OPEN_TYPE_PROXY = 3

'连接服务端api
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
Public Const INTERNET_INVALID_PORT_NUMBER = 21

Public Const INTERNET_SERVICE_FTP = 1
Public Const INTERNET_SERVICE_GOPHER = 2
Public Const INTERNET_SERVICE_HTTP = 3

'打开并连接服务端会话
Public Sub connectftpserver(ByVal fserver As String, ByVal fuser As String, ByVal fps As String)
connecttingno = InternetOpen("FTP Control", 1, VbNullString, VbNullString, 0) 'connecttingno 能取到值
'保存当前活动连接的句柄
connectinglink = InternetConnect(connecttingno, "200.200.200.190", 21, fuser, fps, 1, 0, 0) '连接并取得句柄   ‘conectinglink取不到值,返回了零,哪有错了,请你帮我调一下?
If connectinglink = 0 Then
activeftp = False '标记为活动
shutftpserver
Else
activeftp = True
End If
End Sub

'关闭连接api
Public Declare Function InternetCloseHandle Lib "wininet.dll" (ByVal hInet As Long) As Integer
'关闭并结束服务端会话
Public Sub shutftpserver
If connectinglink <> 0 Then
InternetCloseHandle(connectinglink)
End If
connectinglink = 0
activeftp = False
End Sub

'上传api
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
Public Const FTP_TRANSFER_TYPE_ASCII = &H1
Public Const FTP_TRANSFER_TYPE_BINARY = &H2
'上传文件
Public Sub upload(ByVal cfile As String, ByVal hfile As String)
successflag = FtpPutFile(connectinglink, cfile, hfile, 2, 0)
End Sub

'下载api
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
Public Const INTERNET_FLAG_RELOAD = &H80000000
Public Const INTERNET_FLAG_KEEP_CONNECTION = &H400000
Public Const INTERNET_FLAG_MULTIPART = &H200000
'下载文件
Public Sub Download(ByVal cfile As String, ByVal hfile As String)
successflag = FtpGetFile(connectinglink, hfile, cfile, False, 0, 2, 0)
End Sub


 回到顶部
帅哥哟,离线,有人找我吗?
ttitt147
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:幼狐 帖子:181 积分:1451 威望:0 精华:0 注册:2012/5/11 12:47:00
  发帖心情 Post By:2013/1/27 10:23:00 [只看该作者]

下面是一个窗体的测试代码

 

 

connectftpserver("200.200.200.190","anonymous ","")

Download("D:\test\333.csv","HardDisk/UserSetting/default.csv")

e.Form.Controls("Label1").text = connecttingno
e.Form.Controls("Label2").text = connectinglink
e.Form.Controls("Label3").text = activeftp
e.Form.Controls("Label4").text = successflag


 回到顶部