Determinar el estado de conexión del sistema local y cómo iniciar o finalizar una conexión a Internet mediante Visual Basic .NET o Visual Basic 2005

En este artículo se muestra cómo determinar el estado de conexión del sistema local y cómo iniciar o finalizar una conexión a Internet mediante Visual Basic .NET o Visual Basic 2005.

Versión del producto original: Visual Studio
Número de KB original: 821770

Resumen

En este artículo paso a paso se describe cómo determinar el estado conectado del sistema local mediante la InternetGetConnectedState función que proporciona la API de Microsoft Windows Internet (WinINet). En este artículo también se describe cómo iniciar una conexión a Internet y cómo finalizar una conexión a Internet mediante la InternetDialWinINet función de API y mediante la InternetHangUpWinINet función de API.

La WinINet API es un conjunto de funciones que permite a las aplicaciones interactuar con Gopher, con el protocolo de transferencia de archivos (FTP) y con el protocolo de transferencia de hipertexto (HTTP) para acceder a muchos recursos en Internet. La InternetGetConnectedState función devuelve True o False en función de si existe una conexión. Después de una llamada a la InternetGetConnectedState función, el parámetro lpdwFlags contiene un valor predefinido que proporciona más información sobre la conexión. Por ejemplo, el valor que contiene IpdwFlags puede indicar que la conexión es una conexión de red de área local (LAN), una conexión de módem u otro tipo de conexión. Puede deducir si existe la conexión desde el valor devuelto de la InternetGetConnectedState función.

Cuando la llamada a la InternetGetconnectionState función devuelve True, existe una conexión de red. Sin embargo, esto no garantiza que tenga acceso a datos o que tenga acceso a sitios web a través de la red.

La InternetDial función inicia una conexión a Internet mediante un módem. El parámetro lpszConnectoid especifica el nombre de la conexión de acceso telefónico local que usa la InternetDial función. Puede usar la InternetHangUpWinINet función de API para indicar al módem que finalice la conexión que especifica el parámetro dwConnection .

Ejemplo paso a paso

  1. Inicie Microsoft Visual Studio .NET o Microsoft Visual Studio 2005.

  2. En el menú Archivo, elija Nuevo y, a continuación, haga clic en Proyecto.

  3. En Tipos de proyecto, haga clic en Proyectos de Visual Basic.

    Nota:

    En Visual Studio 2005, haga clic en Visual Basic en Tipos de proyecto.

  4. En Plantillas, haga clic en Aplicación de Windows.

    De forma predeterminada, se crea Form1.

  5. Haga clic con el botón derecho en Form1 y, a continuación, haga clic en Ver código.

  6. Agregue las siguientes instrucciones de declaración a la clase 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. En el menú Ver, haga clic en Designer.

  8. Agregue un control Button a Form1.

  9. Haga clic con el botón derecho en Button1 y, a continuación, haga clic en Propiedades.

  10. En el ventana Propiedades, modifique la propiedad Text del control Button1 para Detectar conexión.

  11. Haga doble clic en Detectar conexión y agregue el código siguiente en el controlador de eventos 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. Agregue otro control Button a Form1.

  13. Haga clic con el botón derecho en Button2 y, a continuación, haga clic en Propiedades.

  14. En el ventana Propiedades, cambie la propiedad Text del control Button2 a Dial Up (Marcar hacia arriba).

  15. Haga doble clic en Marcar hacia arriba y, a continuación, agregue el código siguiente en el controlador de eventos 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
    

    Nota:

    Reemplace Mi conexión por el nombre de la conexión de acceso telefónico local en el equipo.

  16. Agregue otro control Button a Form1.

  17. Haga clic con el botón derecho en Button3 y, a continuación, haga clic en Propiedades.

  18. En el ventana Propiedades, modifique la propiedad Text del control Button3 para que se cuelgue.

  19. Haga doble clic en Cuelgue y agregue el código siguiente en el controlador de eventos 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. En el menú Archivo , haga clic en Guardar todo para guardar el proyecto.

  21. En el menú Depurar , haga clic en Iniciar para ejecutar la aplicación.

Comprobación de que tt funciona

  1. Ejecute la aplicación que creó en la sección Ejemplo paso a paso de este artículo.

    Se muestra Form1.

  2. Haga clic en Detectar conexión y, a continuación, observe el estado conectado actual del equipo local.

  3. Haga clic en Marcar hacia arriba.

    Se muestra el cuadro de diálogo de conexión de acceso telefónico local.

  4. Haga clic en Cuelgue.

    Finaliza la conexión a Internet que estableció en el paso 3.

Referencias

Para obtener más información, visite los siguientes sitios web: