インターネットの急速な発展に伴い、オンライン登録やオンライン ヘルプなどの一部の事項を処理するために、プログラミングではプログラム内で直接ネットワークを構築する必要が多くなり、プログラム内で特定の接続を確立する必要があります。多くのソフトウェアは、ユーザーがインターネットに接続しているかどうかを認識せずにブラウザを起動して URL を検索しますが、多くの労力を費やしてもエラー ページしか見つかりません (もちろん、良い結果は得られません)。プログラムを作成するときにユーザーがインターネットに接続しているかどうかを自動的に判断し、接続している場合は接続を開き、そうでない場合はデフォルトのダイヤルアップ接続を開始できれば、人々はあなたのソフトウェアが他のソフトウェアよりも優れていると感じるでしょうか。 ?インターネットに接続しているかどうかの確認については、さまざまなところで紹介されていますが、ここではデフォルトのダイヤルアップ接続を開始する方法のみを紹介します。
----紹介の前に、まずダイヤルアップ ネットワークを開く方法を見てみましょう。ダイヤルアップ ネットワークは実行可能ファイルではないため、「シェル実行可能ファイル」方法を使用して開くことはできません。ダイヤルアップネットワークを開始するには、エクスプローラーを使用する必要があります。方法は次のとおりです。
シェル"エクスプローラー::{20D04FE0-3AEA-1069-A2D8-08002B30309D}/"&"::{992CFFA0-F557-101A-88EC-00DD010CCC48}",vbNormalFocus
----ただし、ダイヤルアップ ネットワークで接続を開始する場合は、rundll.exe と rnaui.dll を使用して開始する必要があります。その方法は次のとおりです (接続名が 163 であると仮定します)。
シェル「rundllrnaui.dll,RnaDial163」,vbNormalFocus
----注: 上記の説明において、「,RnaDial163」の部分に余分なスペースを挿入したり、大文字と小文字を任意に変更したりしないでください。
----上記は接続名のみを想定していますが、実際のプログラミングでは、デフォルトの接続名を取得して開始する方法はわかりません。ここでは、レジストリを使用して目的を達成できます。完全な手順は次のとおりです。
----コマンド ボタン (cmdCallConnect という名前) をフォームに配置します。コード部分は次のとおりです。
オプション明示的
'登録に関するAPIステートメント
PRivateDeclareFunctionRegOpenKeyExLib"advapi32"Alias"RegOpenKeyExA"(ByValhKeyAsLong,ByValpSubKeyAsString,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()
'デフォルトのダイヤルアップ接続を開始します
シェル「rundllrnaui.dll,RnaDial」GetConnect,vbNormalFocus
EndSub
PublicFunctionGetConnect()AsString
DimhKeyAsLong
DimSubKeyAsString
hKey=HKEY_CURRENT_USER'主キー
SubKey="リモートアクセス"'サブキー
'デフォルトの接続名を取得します
GetConnect=GetRegValue(hKey,SubKey,"デフォルト")
エンドファンクション
PublicFunctionGetRegValue(hKeyAsLong,lpszSubKeyAsString,szKeyAsString)AsVariant
OnErrorGoToErrorRoutineErr:
DimphkResultAsLong
DimlResultAsLong
DimszBufferAsString
DimlBuffSizeAsLong
'バッファの作成
szBuffer=スペース(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)
それ以外
GetRegValue=""
EndIf
終了関数
エラールーチンエラー:
GetRegValue=""
エンドファンクション
上記プログラムはWIN98とVB6.0でデバッグされています。 ->