程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> Visual Basic語言 >> VB綜合教程 >> VisualBasic程序中如何啟動默認的撥號連接

VisualBasic程序中如何啟動默認的撥號連接

編輯:VB綜合教程
隨著因特網的迅猛發展,現在編程常需要在程序中直接聯網來處理一些事項,如在線注冊和在線幫助,這就要求我們要在程序中建立某些連接。很多軟件在不知用戶是否聯網的情況下不管三七二十一就啟動浏覽器查找網址,費了九牛二虎之力只能查出一錯誤頁來(當然不可能有什麼好的結果)。如果我們在程序編寫時能自動判斷用戶是否已經聯網,如已經聯網則打開聯接,如沒有則啟動默認的撥號連接,這樣是不是讓人覺得你的軟件更勝人一處呢?判斷是否已聯網很多地方都有介紹,這裡我們只介紹如何啟動默認的撥號連接。

----在介紹之前讓我們首先看看如何打開撥號網絡。由於撥號網絡不是一個可執行文件,所以不能用“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下調試通過。->

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved