VisualBasic程序中如何启动默认的拨号连接

_可悲_

_可悲_

2016-02-19 18:50

生活已是百般艰难,为何不努力一点。下面图老师就给大家分享VisualBasic程序中如何启动默认的拨号连接,希望可以让热爱学习的朋友们体会到设计的小小的乐趣。
随着因特网的迅猛发展,现在编程常需要在程序中直接联网来处理一些事项,如在线注册和在线帮助,这就要求我们要在程序中建立某些连接。很多软件在不知用户是否联网的情况下不管三七二十一就启动浏览器查找网址,费了九牛二虎之力只能查出一错误页来(当然不可能有什么好的结果)。如果我们在程序编写时能自动判断用户是否已经联网,如已经联网则打开联接,如没有则启动默认的拨号连接,这样是不是让人觉得你的软件更胜人一处呢?判断是否已联网很多地方都有介绍,这里我们只介绍如何启动默认的拨号连接。

----在介绍之前让我们首先看看如何打开拨号网络。由于拨号网络不是一个可执行文件,所以不能用“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

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)

'创建缓冲区
  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

(本文来源于图老师网站,更多请访问https://m.tulaoshi.com/bianchengyuyan/)

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

展开更多 50%)
分享

猜你喜欢

VisualBasic程序中如何启动默认的拨号连接

编程语言 网络编程
VisualBasic程序中如何启动默认的拨号连接

在VisualBasic中实现启动程序时的闪烁屏幕

编程语言 网络编程
在VisualBasic中实现启动程序时的闪烁屏幕

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

不调用拨号网络在程序中拨号

编程语言 网络编程
不调用拨号网络在程序中拨号

如何取消拨号连接?

电脑入门
如何取消拨号连接?

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

VisualBasic实现在程序中开启网页

编程语言 网络编程
VisualBasic实现在程序中开启网页

用Delphi程序获取拨号连接的动态IP地址

编程语言 网络编程
用Delphi程序获取拨号连接的动态IP地址

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

I love everything you love. 我喜欢你喜欢的一切

I love everything you love. 我喜欢你喜欢的一切

实现界面跟随鼠标移动的实例

实现界面跟随鼠标移动的实例
下拉加载更多内容 ↓