-- 作者: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) \'保存当前活动连接的句柄 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
-- 发布时间: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
|