欢迎光临
我们一直在努力

visualbasic程序中如何启动默认的拨号连接_visualbasic教程

建站超值云服务器,限时71元/月

随着因特网的迅猛发展,现在编程常需要在程序中直接联网来处理一些事项,如在线注册和在线帮助,这就要求我们要在程序中建立某些连接。很多软件在不知用户是否联网的情况下不管三七二十一就启动浏览器查找网址,费了九牛二虎之力只能查出一错误页来(当然不可能有什么好的结果)。如果我们在程序编写时能自动判断用户是否已经联网,如已经联网则打开联接,如没有则启动默认的拨号连接,这样是不是让人觉得你的软件更胜人一处呢?判断是否已联网很多地方都有介绍,这里我们只介绍如何启动默认的拨号连接。

—-在介绍之前让我们首先看看如何打开拨号网络。由于拨号网络不是一个可执行文件,所以不能用“Shell可执行文件”的方式来打开。要启动拨号网络,需借助Explorer,方法如下:

Shell”Explorer::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\”&”::{992CFFA0-F557-101A-88EC-00DD010CCC48}”,vbNormalFocus

—-但若是要启动拨号网络中的某一个连接,则需借助rundll.exe及rnaui.dll来启动,方法如下(假定连接名称为163):

Shell”rundllrnaui.dll,RnaDial163″,vbNormalFocus

—-说明:在以上叙述中,“,RnaDial163”这部分不要插入额外的空格,大小写也不要任意更改。

—-上面仅仅假定了连接名称,但实际编程中我们是不知道其名称的,如何取得默认的连接名称并启动它呢?这里我们可利用注册表来达到目的。完整程序如下:

—-在窗体上放置一个命令按钮(名称为cmdCallConnect),下面为代码部份:

OptionExplicit

有关注册的API声明
PrivateDeclareFunctionRegOpenKeyExLib”advapi32″Alias”RegOpenKeyExA”(ByValhKeyAsLong,ByVallpSubKeyAsString,ByValulOptionsAsLong,ByValsamDesiredAsLong,phkResultAsLong)AsLong

PrivateDeclareFunctionRegQueryValueExLib”advapi32″Alias”RegQueryValueExA”(ByValhKeyAsLong,ByVallpValueNameAsString,ByVallpReservedAsLong,ByReflpTypeAsLong,ByValszDataAsString,ByReflpcbDataAsLong)AsLong

PrivateDeclareFunctionRegCloseKeyLib”advapi32″(ByValhKeyAsLong)AsLong
常数
ConstHKEY_CURRENT_USER=&H80000001
ConstERROR_SUCCESS=0&

PrivateSubcmdCallConnect_Click()
启动默认拨号连接
Shell”rundllrnaui.dll,RnaDial” GetConnect,vbNormalFocus
EndSub

PublicFunctionGetConnect()AsString
DimhKeyAsLong
DimSubKeyAsString
hKey=HKEY_CURRENT_USER主键
SubKey=”RemoteAccess”子键
取得默认连接名
GetConnect=GetRegValue(hKey,SubKey,”Default”)
EndFunction

PublicFunctionGetRegValue(hKeyAsLong,lpszSubKeyAsString,szKeyAsString)AsVariant
OnErrorGoToErrorRoutineErr:
DimphkResultAsLong
DimlResultAsLong
DimszBufferAsString
DimlBuffSizeAsLong

创建缓冲区
szBuffer=Space(255)
lBuffSize=Len(szBuffer)

打开注册键
RegOpenKeyExhKey,lpszSubKey,0,1,phkResult

查询结果
lResult=RegQueryValueEx(phkResult,szKey,0,0,szBuffer,lBuffSize)

关闭注册键
RegCloseKeyphkResult

返回结果
IflResult=ERROR_SUCCESSThen
GetRegValue=Left(szBuffer,lBuffSize-1)
Else
GetRegValue=””
EndIf
ExitFunction

ErrorRoutineErr:
GetRegValue=””
EndFunction
以上程序在WIN98,VB6.0下调试通过。->

赞(0)
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com 特别注意:本站所有转载文章言论不代表本站观点! 本站所提供的图片等素材,版权归原作者所有,如需使用,请与原作者联系。未经允许不得转载:IDC资讯中心 » visualbasic程序中如何启动默认的拨号连接_visualbasic教程
分享到: 更多 (0)