电信主站 网通分站
购买流程 付款方式 常见问题 在线提问 续租服务 购物车
用户名: 密 码: 忘记密码?
首 页
域名注册
虚拟主机
双线主机
服务器租用
VPS主机
企业邮局
代理专区
客服中心
虚拟主机行业资讯 虚拟主机评测对比 互联网最新动态 技术学院 站长资讯 在线教程 网站运营
搜索优化 服务器 网络编程 图形图象 站长之家 网页制作 操作系统
冲浪宝典 软件教学 视频通信 办公软件 邮件系统 网络安全 认证考试
您当前位置:西部数码->资讯中心-> 操作系统-> FreeBSD教程
一个封装了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.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!
相关主题
文章页数:[1] 
Google
热门文章
·photoshop鼠绘一个鲜脆欲滴的苹果_photoshop教程
·简单计算函数的编写过程_visualbasic教程
·利用api函数播放wav声音文件_visualbasic教程
·excel、access、vb的结合应用_visualbasic教程
·一个封装了wininetapi函数的类(cwininetconnection)_visualbasic教程
·vb6.0初学者的10个编程小技巧_visualbasic教程
·vb图像处理之图像的色彩纠正_visualbasic教程
·vb图像处理之铅笔画算法和木雕算法_visualbasic教程
·vb利用高级音频函数编写多媒体播放器_visualbasic教程
·visualbasic可以产生四角形以外其他形状的form_visualbasic教程

最新文章
·phpmyadmin安装注意事项_php技巧
·用photoshop帮漂亮mm肖像照片美白牙齿_photoshop教程
·photoshop为传统彩色照片底片翻拍图校色_photoshop教程
·zend公司推动中国开源php发展_php文摘
·教你制作可以随身携带的freebsd系统_freebsd教程
·将心仪的图片定义为photoshop填充图案_photoshop教程
·忘记windows xp登入密码的9种解决办法_windows xp
·photoshop快速消除肖像照片黑眼圈_photoshop教程
·windows xp中的秘密武器_windows xp
·匿与无形:windows xp系统隐藏技巧大放送_windows xp


 
 


版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!

特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。
  打印  刷新  关闭
返回首页 |关于我们 | 联系我们 | 付款方式 | 创业联盟 | 虚拟主机 | 资讯中心 | 友情链接 | 网站地图

版权所有 西部数码(www.west263.com)
CopyRight (c) 2002~2006 west263.com all right reserved.
公司地址:四川成都市万和路90号天象大厦4楼 邮编:610031
电话总机:028-86262244 86263048 86263408 86263960 86264018 86267838
售前咨询:总机转201 202 203 204 206 208
售后服务:总机转211 212 213 214
财务咨询:总机转224 223 传真:028-86264041 财务QQ:点击发送消息给对方635483282
售前咨询QQ:点击发送消息给对方2182518 点击发送消息给对方241975952 点击发送消息给对方275026793 点击发送消息给对方408235859
售后服务QQ:点击发送消息给对方17708515 点击发送消息给对方307742704 点击发送消息给对方287976517 点击发送消息给对方363783715
《中华人民共和国增值电信业务经营许可证》编号:川B2-20030065号