Tester connexion (2)
Test de la connexion à l'internet
Tester la connexion au réseau internet n'est pas chose facile. La plupart des codes qui proposent de tester cette connexion retourne une information erronée.
Les fonctions misent à disposition par Windows teste en réalité la connexion au réseau. Pour peu que l'on dispose de plusieurs machines connectées en réseau local, Windows nous informe que l'on est connecté. Cela même lorsque le modem ou routeur est déconnecté du réseau externe.
Le seul cas de réponse correcte avec cette méthode est lorsqu'un seul PC est directement relié au routeur. Mais cela est actuellement rarement le cas, même dans les très petites structures.
Le code ci-dessous (que l'on placera dans un module général) teste d’abord la connexion au réseau local, puis en cas de réponse positive tente un accès à une domaine librement défini. Il faut bien sûr choisir une adresse très disponible et qui réponde rapidement.
L'utilisation est donc réduite à un simple « if OnLineOK Then ... »
'/
'/ A placer dans la partie déclarative
'/
'// utilisé par WANconnection
Private Const FLAG_ICC_FORCE_CONNECTION = &H1
Private Declare Function InternetCheckConnection _
Lib "Wininet.dll" _
Alias "InternetCheckConnectionA" _
(ByVal lpszUrl As String, _
ByVal dwflags As Long, _
ByVal dwReserved As Long) As Long
'// utilisé par LANconnection
Private Declare Function InternetGetConnectedState _
Lib "wininet" (ByRef dwflags As Long, _
ByVal dwReserved As Long) As Long
Public Function LANconnection() As Boolean
'// Teste la connexion au réseau interne
If InternetGetConnectedState(0, 0) = 1 Then
LANconnection = True
Else
LANconnection = False
End If
End Function
Public Function WANconnection( _
Optional sURL As String = "http://www.yahoo.com") As Boolean
'// Teste la connexion au réseau internet
If CheckInetConnection(sURL) Then
WANconnection = True
Else
WANconnection = False
End If
End Function
Public Function CheckInetConnection(sUrlOfInterest As String) As Boolean
CheckInetConnection = InternetCheckConnection( _
sUrlOfInterest, FLAG_ICC_FORCE_CONNECTION, 0&)
End Function
Function OnLineOK() As Boolean
'// Test de la connexion
If LANconnection Then
If WANconnection Then
OnLineOK = True
Else
OnLineOK = False
End If
End If
End Function