Una manera sencilla de hacerlo sería disponiendo de una función que diga si existe conexión a Internet o no y, si existe, que se inicie un contador.
Para hacer esto, bastaría con disponer de un control Timer con un intervalo bajo (unos 50 milisegundos) para que vaya comprobando si hay conexión.
Si detecta que hay conexión, empieza a contar. Cuando detecta, que ya no hay, que detenga el contador.
Esta es mi idea para hacerlo, pero es posible que alguien te pueda contar otra distinta e incluso mejor.
Esta es la función necesaria para saber si se está conectado o no.
Esta función devuelve el número de conexiones activas, puesto que devolverá 0 si no se está conectado o más de 0 si se está conectado:
'-------------------------------------------------------------
'CÓDIGO DE MÓDULO
'-------------------------------------------------------------
'Api necesaria para la función
Declare Function RasEnumConnections Lib "RasApi32.DLL" Alias "RasEnumConnectionsA" (lprasconn As Any, lpcb As Long, lpcConnections As Long) As Long
'Función
Function RASCount() As Integer
Dim lprasconn(0 To 1) As Long
Dim rc As Long
Dim lpcb As Long
Dim lpcConnections As Long
lprasconn(0) = 32
lpcb = 0
rc = RasEnumConnections(lprasconn(0), lpcb, lpcConnections)
RASCount = lpcConnections
End Function
'-------------------------------------------------------------
'CÓDIGO DE MÓDULO
'-------------------------------------------------------------
'-------------------------------------------------------------
'CÓDIGO DE FORMULARIO
'-------------------------------------------------------------
'Para probar la función, usa esto:
If RASCount() Then
MsgBox "Connected"
Else
MsgBox "Not connected"
End If
'-------------------------------------------------------------
'CÓDIGO DE FORMULARIO
'-------------------------------------------------------------
Espero que esta función y mi idea te ayude a realizar tu proyecto.
Hasta otra,
Zoto