首 页 网络编程
网页制作 图形图象 操作系统 冲浪宝典
软件教学 认证考试

网络安全 网络办公 行业资讯 评测对比
您当前位置:站长天空 -> 软件教学-> 图文处理
一个封装了wininetapi函数的类(cwininetconnection)_visualbasic教程
作者:网友供稿 点击:0
推荐
西部数码-全国虚拟主机10强!20余项虚拟主机管理功能,全国领先!第6代双线路虚拟主机,南北访问畅通无阻!可在线rar解压,自动数据恢复设置虚拟目录等.免费赠送访问统计,企业邮局.Cn域名注册10元/年,自助建站480元起,免费试用7天,满意再付款!P4主机租用799元/月.月付免压金
站内搜索
文章页数:[1] 
部分WinInetAPI函数允许你建立或断开Internet连接,定义当前Internet连接及其属性。WinInet负责控制系统在线和离线两种状态。当系统处于离线状态时,IE会从Cache中读取所需的资料,如果是在线状态,则IE会从Internet上读取资料。

注意
当处于在线状态时,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
Getthepointerstothevariablesweregoingtopass
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))->


文章整理:站长天空 网址:http://www.z6688.com/
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

文章页数:[1] 


放大字体显示 缩小字体显示 打印文章 推荐给朋友
热门文章
·Java Reflection (JAVA反射)-JSP教程,Java技巧及代码
·WebServices入门-.NET教程,Web Service开发
·如何在c#中使用mapx5.0(二)-.NET教程,C#语言
·用java启动记事本程序,并输入内容-JSP教程,Java技巧及代码
·正则表达式-ASP教程,正则表达式
·sql server中的外键约束-数据库专栏,SQL Server
·java中的基于套结字(socket)的通信 一. 一个双人单方向通信例子-JSP教程,Java技巧及代码
·图解利用Eclipse3+Lomboz3+Tomcat开发JSP --1.环境-JSP教程,Jsp/Servlet
·EditPlus+NAnt构建轻巧的.NET开发环境-.NET教程,Asp.Net开发
·ASP.NET2.0下利用javascript实现TreeView中的checkbox全选-.NET教程,Asp.Net开发
最新文章
·photoshop简单为美女照片瘦身及调色_photoshop教程
·fireworks巧绘精美可爱水杯图标_fireworks教程
·如何修复windows vista系统用户损坏的配置文件_windows vista
·本地门户营运的3个重点注意事项_站长心得
·必知:在线推广网站的十四种方法_站长心得
·google analytics统计分析新版本说明_google推广
·google adsense 违规行为集_google推广
·googleadsense的无效点击_google推广
·关于网络原创作品的版权问题_网络编辑
·符合xhtml标准div+css布局的网站对网站seo的影响_seo网站优化
相关主题
西部数码虚拟主机

友情链接
CNNIC 西部数码
万网 自助建站
虚拟主机 asp空间
域名注册 域名
域名申请 主页空间
论坛空间 网站空间
国际域名 虚拟空间
空间租用 DDOS防火墙
成都主机托管 四川主机托管
主机租用 服务器租用
网站目录 自助建站
虚拟主机 网址大全
软件下载
自助链接
虚拟主机资讯 特价虚拟主机
版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
关于我们:站长天空:专业提供最新的站长资讯、在线教程、虚拟主机权威评测、虚拟主机性能对比、网站制作教程,开发教程,站长工具。包括网页制作教程、冲浪宝典、编程参考、操作系统、软件教学、行业动态等。
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
发表评论 打印  刷新     关闭