Come da oggetto, avrei bisogno di risolvere il problema della verifica della connessione ad internet del pc sul quale gira il programma.
Ho cercato e ricercato molto prima di postare, per paura che fosse già stato risolto, ma, ammesso e non concesso che la soluzione ci sia, non sono riuscito a trovarla (x VB6).
Ho provato vari codici che si trovano su internet relativi all'uso di "wininet.dll"
L'ultimo provato è il seguente
codice:
Private Declare Function InternetGetConnectedStateEx Lib "wininet.dll" (ByRef lpdwFlags As Long, ByVal lpszConnectionName As String, ByVal dwNameLen As Integer, ByVal dwReserved As Long) As Long
Public Function CheckInternetConnection() As Boolean
On Error GoTo ERR
Dim aux As String * 255
Dim R As Long
R = InternetGetConnectedStateEx(R, aux, 254, 0)
If R = 1 Then
CheckInternetConnection = True
Else
CheckInternetConnection = False
End If
Exit Function
ERR:
MsgBox ERR.Description, vbOKOnly + vbCritical, "Wininet.dll"
End Function
Public Function NetConnectStatus() As Boolean
On Error GoTo err_DoWebRequest
Dim strurl As String
strurl = "http://www.google.it/"
Dim objXML As Object
Set objXML = CreateObject("Microsoft.XMLHTTP")
objXML.Open "GET", strurl, False
objXML.Send
If (objXML.Status = 404) Then
DoWebRequest = "404 Error"
DoWebRequest = objXML.responseText
Else
NetConnectStatus = True
End If
Set objXML = Nothing
Exit Function
err_DoWebRequest:
NetConnectStatus = "False"
End Function
... dove 'CheckInternetConnection' restituisce falso solo se si è scollegati dal modem (naturalmente trattasi sempre di modem ADSL, visti i tempi) e invece da vero se si è collegati al modem ma non cavo telefonico staccato
mentre la 'NetConnectStatus' restituisce false se si scollega il cavo telefonico.
Il problema è quello che ho trovato rilevato da molti, ma delle quali ho trovato soluzioni solo per VB.Net, ovvero la possibilità di impostare una sorta di timeout sul false, in quanto se si è connessi la risposta è veloce (un paio di secondi al max) altrimenti si deve attendere parecchi secondi, rasentando anche il minuto
.
Anche l'apertura di connessione ADO su internet, ma... il problema è sempre lo stesso
Ho trovato parecchio materiale, non relativo al timeout, purtroppo, chi usa winsock (ma per internet?), io l'ho usato ma per un programma di messaggistica interna..., inet etc etc.
Gratissimo a chiunque mi possa essere di aiuto
Caro Gibra, ho spulciato anche sul tuo sito, ma non mi sembra di aver trovato nulla.