Para comprobar si estamos conectados o no a una red local, puedes usar la API
IsNetworkAliveConst NETWORK_ALIVE_AOL = &H4
Const NETWORK_ALIVE_LAN = &H1
Const NETWORK_ALIVE_WAN = &H2
Private Declare Function IsNetworkAlive Lib "SENSAPI.DLL" (ByRef lpdwFlags As Long) As Long
Private Sub Form_Load()
Dim Datos As Long
If IsNetworkAlive(Datos) = 0 Then
MsgBox "No estamos conectados a una red"
Else
MsgBox "¡El sistema está conectado a una " + IIf(Datos = NETWORK_ALIVE_AOL, "AOL", IIf(Datos = NETWORK_ALIVE_LAN, "LAN", "WAN")) + "!"
End If
End Sub
Para enumerar los adaptadores, podemos usar la API
GetIpStatistics Lib, que devuelve muchísimos datos. En este ejemplo al cargar el formulario nos dice cuantos adaptadores hay. Ojo a
Cstr para convertir el valor a String.
'No las he comentado todas porque
'hay muchas que no se para que sirven
Private Type MIB_IPSTATS
dwForwarding As Long
dwDefaultTTL As Long
dwInReceives As Long
dwInHdrErrors As Long ' errores de cabecera
dwInAddrErrors As Long ' errores de direccion
dwForwDatagrams As Long
dwInUnknownProtos As Long
dwInDiscards As Long
dwInDelivers As Long
dwOutRequests As Long
dwRoutingDiscards As Long
dwOutDiscards As Long
dwOutNoRoutes As Long
dwReasmTimeout As Long
dwReasmReqds As Long
dwReasmOks As Long
dwReasmFails As Long
dwFragOks As Long
dwFragFails As Long '
dwFragCreates As Long
dwNumIf As Long ' número de adaptadores de red
dwNumAddr As Long ' número de direcciones ip
dwNumRoutes As Long
End Type
Private Declare Function GetIpStatistics Lib "iphlpapi" (pStats As MIB_IPSTATS) As Long
Private Sub Form_Load()
Dim IpStats As MIB_IPSTATS
GetIpStatistics IpStats
MsgBox "El numero de conexiones de red es " & CStr(IpStats.dwNumIf)
End Sub
En cuanto a lo de establecer y cerrar conexiones de red, esto ya es algo más complicado ya que en muchos casos requiere autentificación, mírate este enlace:
Ejemplo conectar y desconectar recursos de redhttp://www.vb-mundo.com/truco_programacion_177-Conectar-y-desconectar-una-unidad-de-red.htmUn saludo