ローカル システムの接続状態と、Visual Basic .NET または Visual Basic 2005 を使用してインターネット接続を開始または終了する方法を決定する

この記事では、ローカル システムの接続状態を判断する方法と、Visual Basic .NET または Visual Basic 2005 を使用してインターネット接続を開始または終了する方法について説明します。

元の製品バージョン: Visual Studio
元の KB 番号: 821770

概要

この詳細な記事では、Microsoft Windows Internet (WinINet) API が提供する関数を使用 InternetGetConnectedState して、ローカル システムの接続状態を判断する方法について説明します。 この記事では、インターネット接続を開始する方法と、API 関数と API 関数を使用してインターネット接続を InternetDialWinINet 終了する InternetHangUpWinINet 方法についても説明します。

WinINet API は、アプリケーションが Gopher、ファイル転送プロトコル (FTP)、ハイパーテキスト転送プロトコル (HTTP) を使用してインターネット上の多くのリソースにアクセスできるようにする一連の関数です。 関数は InternetGetConnectedState 、接続が存在するかどうかに基づいて True または False を返します。 関数の InternetGetConnectedState 呼び出し後、 lpdwFlags パラメーターには、接続に関する詳細情報を提供する定義済みの値が含まれます。 たとえば、 IpdwFlags に含まれている値は、接続がローカル エリア ネットワーク (LAN) 接続、モデム接続、または別の種類の接続であることを示している可能性があります。 関数の戻り値 InternetGetConnectedState から接続が存在するかどうかを推測できます。

関数呼び出しが InternetGetconnectionState True を返すと、ネットワーク接続が存在します。 ただし、データにアクセスできる、またはネットワーク経由で Web サイトにアクセスできる保証はありません。

関数は InternetDial 、モデムを使用してインターネットへの接続を開始します。 lpszConnectoid パラメーターは、関数が使用するダイヤルアップ接続の名前をInternetDial指定します。 API 関数を InternetHangUpWinINet 使用して、 dwConnection パラメーターが指定する接続を終了するようにモデムに指示できます。

ステップ バイ ステップの例

  1. Microsoft Visual Studio .NET または Microsoft Visual Studio 2005 を起動します。

  2. [ ファイル] メニューの [ 新規] をポイントし、[ プロジェクト] をクリックします。

  3. [ プロジェクトの種類] で、[ Visual Basic プロジェクト] をクリックします。

    注:

    Visual Studio 2005 で、[プロジェクトの種類] で [Visual Basic] をクリックします。

  4. [ テンプレート] の [ Windows アプリケーション] をクリックします。

    既定では、Form1 が作成されます。

  5. [Form1] を右クリックし、[コードの表示] をクリックします。

  6. Form1 クラスに次の宣言ステートメントを追加します。

    Private Declare Function InternetGetConnectedState Lib "wininet.dll" (ByRef lpdwFlags As Int32, _
    ByVal dwReserved As Int32) As Boolean
    
    Private Declare Function InternetDial Lib "Wininet.dll" (ByVal hwndParent As IntPtr, _
    ByVal lpszConnectoid As String, ByVal dwFlags As Int32, ByRef lpdwConnection As Int32, _
    ByVal dwReserved As Int32) As Int32
    
    Private Declare Function InternetHangUp Lib "Wininet.dll" _
    (ByVal lpdwConnection As Int32, ByVal dwReserved As Int32) As Int32
    
    Private Enum Flags As Integer
     'Local system uses a LAN to connect to the Internet.
     INTERNET_CONNECTION_LAN = &H2
     'Local system uses a modem to connect to the Internet.
     INTERNET_CONNECTION_MODEM = &H1
     'Local system uses a proxy server to connect to the Internet.
     INTERNET_CONNECTION_PROXY = &H4
     'Local system has RAS installed.
     INTERNET_RAS_INSTALLED = &H10
    End Enum
    
    'Declaration Used For InternetDialUp.
    Private Enum DialUpOptions As Integer
     INTERNET_DIAL_UNATTENDED = &H8000
     INTERNET_DIAL_SHOW_OFFLINE = &H4000
     INTERNET_DIAL_FORCE_PROMPT = &H2000
    End Enum
    
    Private Const ERROR_SUCCESS = &H0
    Private Const ERROR_INVALID_PARAMETER = &H87
    
    Private mlConnection As Int32
    
  7. [表示] メニューの [Designer] をクリックします。

  8. Form1 に Button コントロールを追加します。

  9. Button1 を右クリックし、[プロパティ] をクリックします。

  10. プロパティ ウィンドウで、Button1 コントロールの Text プロパティを [接続の検出] に変更します。

  11. [接続の 検出] をダブルクリックし、 Button1_Click イベント ハンドラーに次のコードを追加します。

    Dim lngFlags As Long
    
    If InternetGetConnectedState(lngFlags, 0) Then
        'connected.
        If lngFlags And Flags.INTERNET_CONNECTION_LAN Then
            'LAN connection.
            MsgBox("LAN connection.")
        ElseIf lngFlags And Flags.INTERNET_CONNECTION_MODEM Then
            'Modem connection.
            MsgBox("Modem connection.")
        ElseIf lngFlags And Flags.INTERNET_CONNECTION_PROXY Then
            'Proxy connection.
            MsgBox("Proxy connection.")
        End If
    Else
        'not connected.
        MsgBox("Not connected.")
    End If
    
  12. 別の Button コントロールを Form1 に追加します。

  13. Button2 を右クリックし、[プロパティ] をクリックします。

  14. プロパティ ウィンドウで、Button2 コントロールの Text プロパティを Dial Up に変更します。

  15. [ ダイヤルアップ] をダブルクリックし、 Button2_Click イベント ハンドラーに次のコードを追加します。

    Dim DResult As Int32
    
    DResult = InternetDial(Me.Handle, "My Connection", DialUpOptions.INTERNET_DIAL_FORCE_PROMPT, mlConnection, 0)
    
    If (DResult = ERROR_SUCCESS) Then
        MessageBox.Show("Dial Up Successful", "Dial-Up Connection")
    Else
        MessageBox.Show("UnSuccessFull Error Code" & DResult, "Dial-Up Connection")
    End If
    

    注:

    [マイ接続] を、コンピューター上のダイヤルアップ接続の名前に置き換えます。

  16. 別の Button コントロールを Form1 に追加します。

  17. Button3 を右クリックし、[プロパティ] をクリックします。

  18. プロパティ ウィンドウで、Button3 コントロールの Text プロパティを [ハングアップ] に変更します。

  19. [ ハングアップ] をダブルクリックし、 Button3_Click イベント ハンドラーに次のコードを追加します。

    Dim Result As Int32
    
    If Not (mlConnection = 0) Then
        Result = InternetHangUp(mlConnection, 0&)
        If Result = 0 Then
            MessageBox.Show("Hang up successful", "Hang Up Connection")
        Else
            MessageBox.Show("Hang up NOT successful", "Hang Up Connection")
        End If
    Else
        MessageBox.Show("You must dial a connection first!", "Hang Up Connection")
    End If
    
  20. [ ファイル ] メニューの [ すべて保存 ] をクリックして、プロジェクトを保存します。

  21. [ デバッグ ] メニューの [ スタート ] をクリックして、アプリケーションを実行します。

tt が動作することを確認する

  1. この記事の 「ステップ バイ ステップの例 」セクションで作成したアプリケーションを実行します。

    Form1 が表示されます。

  2. [ 接続の検出] をクリックし、ローカル コンピューターの現在の接続状態を確認します。

  3. [ ダイヤルアップ] をクリックします。

    [ダイヤルアップ接続] ダイアログ ボックスが表示されます。

  4. [ ハングアップ] をクリックします。

    手順 3 で確立したインターネット接続が終了します。

関連情報

詳細については、次の Web サイトを参照してください。