一个封装了WinInetAPI函数的类(CWinInetConnect…
2018-06-17 17:13:12来源:未知 阅读 ()
注意
当处于在线状态时,IE仍会首先在Cache中寻找你输入的URL是否存在。如果是,IE会检查其真实性。IE会将在Cache
中资料的日期同服务器上的资料的日期相比较。如果Cache中的资料是旧的话,则从服务器上读取资料。
CwinInetConnection实现了上述功能。它封装了WinInetAPI函数,并使你能在下一个方法或属性中创建类的实例。
方法描述
SetGlobalOnline将系统转换到在线状态
SetGlobalOffline将系统转换到离线状态
GoOnline出现对话框,询问是否需要将系统转到在线状态以获取所需的资料。
AutoDial出现建立默认连接对话框
Dial出现建立用户自定义连接对话框
AutoDialHangUp在使用AutoDial方法后中断当前连接
HangUp使用Dial方法后中断当前连接
Refresh刷新类的属性
表一、CWinInetConnection类所包含的方法
如你所见,上半部分用来显示类的属性。所有属性,除ConnectionName外,都是布尔类型。并且这些属性是只读的。
属性描述
IsConnected若返回值为真,表明Internet连接已建立
ConnectionName返回当前活动连接的名称
IsConnectionConfigured若返回值为真,表明系统的Internet连接设置正确
IsOffline若返回值为真,表明系统目前处于离线状态
IsRasInstalled若返回值为真,表明系统已装了远程访问服务(RAS)
UseProxy若返回值为真,表明系统是通过代理服务器连上Internet
UseLAN若返回值为真,表明系统通过局域网连上Internet
UseModem若返回值为真,表明系统通过Modem拨号上网
表二、CWinInetConnection的属性
如果你想看看CWinInetConnection类是如何工作的,又或者想不用CWinInetConnection类,自己调用WinInetAPI函数
--------------------------------------------------------------------------------
在VB中用WinInetAPI函数并没有什么特别。你需要用到下面的几个函数。
InternetAutodial
InternetAutodialHangup
InternetDial
InternetHangUp
InternetGoOnline
看看类的源代码,就知道上面几个函数的用法。所以这里就不再多说。比较难的一个部分是如何判断系统是在线还是离线?这需要用到InternetGetConncedStateEx函数。该函数不仅可以判断是否已经建立了Internet连接,还能返回一大堆连接的属性。
在试着调用InternetGetConnectedStateEx函数,遇到了不小的麻烦。该函数的行为更象是一个C语言函数。下面是该函数的声明:
DeclareFunctionInternetGetConnectedStateExLib"wininet.dll"Alias"InternetGetConnectedStateExA"(lpdwFlagsAsLong,lpszConnectionNameAsLong,dwNameLenAsLong,ByValdwReservedAsLong)AsLong
如果系统已经连上了Internet,该函数就会返回一个非零的值。最后一个参数dwReserved,被留作以后扩展之用,在这里它必须等于零。参数lpszConnectionName返回一个字符串,即当前连接的名称。参数dwNameLen包含该字符串的大小。最后一个参数lpdwFlags返回一个类型为Long的值,其中包含一系列的属性。下面是Refresh方法的部分代码,其主要目的是要调用InternetGetConnectedStateEx函数。
'Allocatebufferforthenameofconnection
strConnectionName=Space(256)
'InitializevariablelNameLen-thelengthofthebuffer
lNameLen=256
'Getthepointerstothevariableswe'regoingtopass
'tothefunctionInternetGetConnectedStateEx
lPtr=StrPtr(strConnectionName)
lNameLenPtr=VarPtr(lNameLen)
'CalltheInternetGetConnectedStateExfunction.
'Pleasepayattentionthattwoparametersare
'passingpassbythevalue(ByVal)
lRetVal=InternetGetConnectedStateEx(lConnectionFlags,ByVallPtr,ByVallNameLen,0&)
'TheprocessingofthelRetValismissed
'ChecktheappropriatebitsofthelConnectionFlags
'inordertoinitializethepropertiesofCWinInetConnection
mvarUseModem=lConnectionFlagsAndINTERNET_CONNECTION_MODEM
mvarUseLAN=lConnectionFlagsAndINTERNET_CONNECTION_LAN
mvarUseProxy=lConnectionFlagsAndINTERNET_CONNECTION_PROXY
mvarIsRasInstalled=lConnectionFlagsAndINTERNET_RAS_INSTALLED
mvarIsOffline=lConnectionFlagsAndINTERNET_CONNECTION_OFFLINEmvarIsConnectionConfigured=lConnectionFlagsAndINTERNET_CONNECTION_CONFIGURED
'Extractthenameofcurrentconnectionwiththehelp
'ofthepointertothevariablestrConnectionName
mvarConnectionName=StringFromPointer(lPtr)
Justforinformationhereisthefunctionthatextractsthestringbythepointer.
FunctionStringFromPointer(ByVallPointerAsLong)AsString
DimstrTempAsString
DimlRetValAsLong
strTemp=String$(lstrlen(ByVallPointer),0)
lRetVal=lstrcpy(ByValstrTemp,ByVallPointer)
IflRetValThenStringFromPointer=strTemp
EndFunction
第二个不太明显的任务是在离线和在线两种状态间转换。看上去似乎比较复杂,实际上用一个WinInet函数InternetSetOption就行了。
DeclareFunctionInternetSetOptionLib"wininet.dll"Alias"InternetSetOptionA"(ByValhInternetAsLong,ByValdwOptionAsLong,lpBufferAsAny,ByValdwBufferLengthAsLong)AsLong
InternetSetOption函数可用来改变各种Internet设置及当前网络进程的参数。将第一个参数hInternet的值设为零,因为我们将要改变系统的参数。参数dwOption能接收一个Flag值,表示我们将要改变的设置。在这里我们将用到INTERNET_OPTION_CONNECTED_STATE。参数lpBuffer可以扮演多种角色。它可以接收或返回不同类型的值。本程序中将传递一个自定义类型,INTERNET_CONNECTED_INFO,给这个参数
TypeINTERNET_CONNECTED_INFO
dwConnectedStateAsLong
dwFlagsAsLong
EndType
为了调用InternetSetOption函数,我们必须首先初始化INTERNET_CONNECTED_INFO,其成员定义了系统要转换到的状态。下面是如何将系统转到在线状态。
DimConInfoAsINTERNET_CONNECTED_INFO,lRetValueAsLong
ConInfo.dwConnectedState=INTERNET_STATE_CONNECTED
lRetValue=InternetSetOption(0&,INTERNET_OPTION_CONNECTED_STATE,ConInfo,Len(ConInfo))
AndthisoneisusedtoswitchthesystemintoOfflinemode:
DimConInfoAsINTERNET_CONNECTED_INFO,lRetValueAsLong
ConInfo.dwConnectedState=INTERNET_STATE_DISCONNECTED_BY_USER
ConInfo.dwFlags=ISO_FORCE_DISCONNECTED
lRetValue=InternetSetOption(0&,INTERNET_OPTION_CONNECTED_STATE,ConInfo,Len(ConInfo))->
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
上一篇:字体对象克隆招法
下一篇:如何用VB访问外来数据库
- And、Or和Xor:让我们来优化表达式 2018-06-17
- VB入门教程之一 2018-06-17
- VB千里行-让程序在后台运行 2018-06-17
- 利用VB三维面板控件设计流动条 2018-06-17
- VB常见问题解答(1) 2018-06-17
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash