Retomo el tema porque se me presento un problema que por poco me deja mal.
Usando este codigo checo unos enlaces a internet
'------ para la conexión a internet ------------------
Public Declare Function InternetGetConnectedState Lib "wininet.dll" (ByRef lpdwFlags As Long, ByVal dwReserved As Long) As Long
Public Const INTERNET_CONNECTION_MODEM_BUSY As Long = &H8
Public Const INTERNET_RAS_INSTALLED As Long = &H10
Public Const INTERNET_CONNECTION_OFFLINE As Long = &H20
Public Const INTERNET_CONNECTION_CONFIGURED As Long = &H40
'---------------------------------------------------------------
Public Function HayInternet() As Boolean
HayInternet = InternetGetConnectedState(0&, 0&)
End Function
Private Sub LeyendoEnlaces()
If HayInternet Then
Dim hOpen As Long, hFile As Long, sBuffer As String, ret As Long
sBuffer = Space(1000)
hOpen = InternetOpen(scUserAgent, INTERNET_OPEN_TYPE_DIRECT, vbNullString, vbNullString, 0) 'Aqui se me cuelga
hFile = InternetOpenUrl(hOpen, sUrl, vbNullString, ByVal 0&, INTERNET_FLAG_RELOAD, ByVal 0&) 'Open the url
InternetReadFile hFile, sBuffer, 1000, ret
InternetCloseHandle hFile
InternetCloseHandle hOpen
...
...
...
End Sub
Entonces sucede lo siguiente.
1.- Cuando el aplicativo corre en una PC conectada a un router y el router esta apagado la función HayInternet me devuelve False y no hace nada con internet saliendo hacia otros procedimientos. Todo perfecto. Si la función devuelve True entonces lee unos enlaces los cuales manipulo. Esto lo probé en mi PC y ejecuto perfecto, lo lleve a 4 clientes y todo muy bien, Ojo que todos esos 4 clientes usan el aplicativo en red.
2.- Pero el sabado en un quinto cliente el aplicativo empezó a colgarse, abro un browser y no había internet, el router estaba prendido y bien conectado, conclusión el proveedor no le daba internet pero... ¿porque se cuelga mi aplicativo?, me voy al codigo y veo la funcion HayInternet me sigue devolviendo True... entonces concebí mal esa funcion ya que esta no me verifica si hay internet o no, creo que me verifica si estoy conectado a la red o no.... Para salir del paso apague esas funciones y el cliente pudo andar.
3.- Llegue a mi casa y volvi a probar y todo funcionaba bien, ahora abro una maquina virtual y alli levanto el aplicativo. La maquina virtual se alimenta del internet de la PC host. El aplicativo tambien corre bien, la funcion entrega True. Apago el router, naturalmente la red del host sale como desconectada pero no la red de la PC virtual. Levanto el aplicativo y nuevamente se cuelga, la función me sigue dando true. Luego si sigo se me cuelga en hOpen = InternetOpen(scUserAgent,.....
¿Como podria hacer para resolver esto? la función que uso al parecer solo me da true o false si el router esta prendido y conectado directamente a la pc ¿? no capto este tema. ¿Que otra consulta o funcion debo agregar?
Muchas Gracias.