Para poder detectar si tengo o no internet uso la libreria Sensapi.dll
Código
Option Explicit 'Constantes para determinar que tipo de Red estamos conectados Const 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 Timer1_Timer() Dim Ret As Long 'Si la Api retorna 0 quiere decir que no hay ningun tipo de conexion de Red If IsNetworkAlive(Ret) = 0 Then Label1 = "No hay" Else Label1 = "Si hay" End If End Sub
Esto lo ejecuto desde una maquina virtual con conexión a internet, el timer esta con intervalo 2000 y realizo las siguientes pruebas las cuales describo paso a paso:
Ejecuto el programa y no lo detengo
Obtengo el mensaje "Si hay": CORRECTO
Dentro de Windows deshabilito la red y el programa indica "No hay": CORRECTO
Lo vuelvo a habilitar y obtengo un "Si hay": CORRECTO
A la maquina virtual le quito la red y obtengo "No hay": CORRECTO
Lo vuelvo a activar y obtengo "Si hay": CORRECTO
En ese momento me voy al router y lo apago y el programa cambia a "No hay". CORRECTO
Hasta aqui Bingo pero...
Con el router apagado voy al programa y lo detengo, lo vuelvo a ejecutar y obtengo un "Si hay" pero el router está apagado!!!
¿porque sucede esto estimados?
Quedo a la espera de sus comentarios, muchas gracias