Tester la connexion à l'internet
Tester la connexion à l'internet
Il existe plusieurs méthodes pour tester une connexion. Des fonctions comme LANconnection (Local Area Network) ou WANConnection (Wide Area Network) , ou plus ancienne, facilite cela; mais on chacune ses avantages et ses inconvénients.
Il existe pourtant un méthode qui a permet ce test de manière satisfaisante... le fameux PING !
On ouvre une invite de commande par la combinaison de touches [Windows] + R et on y tape CMD, ce qui ouvre la fenêtre. Là, un simple "PING <adresse IP> vous affichera le temps de réponse de l'adresse indiquée.
Il est ainsi possible de tester une adresse IP sur internet, l'adresse d'un serveur qui répond rapidement de préférence.
Oui, mais ACCESS dans tout cela ?
Et bien, on peut appeler cette commande PING par un Shell Access. La réponse du PING habituellement affichée dans la fenêtre sera détournée dans un fichier.
Pour rendre cela transparent, il suffit d'utiliser la fonction ci-dessous. On peut transmettre son IP favorite (de son hébergeur ou fournisseur d'accès), mais à défaut une adresse de serveur de Google sera utilisée.
Avant d'envoyer un émail ou plus généralement accéder à l'internet, un simple :
If TestIP Then
'/ accès internet
'/ ici le code utile
Else
MsgBox "Pas de connexion à l'internet !"
End If
La fonction :
Function TestIP(Optional sIP As String = "8.8.8.8") As Boolean
'/ utilise la fonction fShellRun
Dim strCommand As String
Dim strPing As String
' Construction de la chaîne de commande
strCommand = "%ComSpec% /C %SystemRoot%\system32\ping.exe -n 1 -w 500 " _
& sIP & " | " & "%SystemRoot%\system32\find.exe /i " _
& Chr(34) & "TTL=" & Chr(34)
strPing = fShellRun(strCommand)
If strPing = "" Then
TestIP = False
Else
TestIP = True
End If
End Function
et la sous-fonction :
Function fShellRun(sCommandStringToExecute) As String
' Cette fonction accepte une commande DOS sous forme de chaîne de caractères
' Elle exécute la commande dans un shell et écrit le résultat dans un fichier
' Ce fichier est ensuite lu et est retourné comme valeur par la fonction.
Dim oShellObject, oFileSystemObject, sShellRndTmpFile
Dim oShellOutputFileToRead, iErr
' Cochez la référence : Microsoft Scripting Runtime
Set oShellObject = CreateObject("Wscript.Shell")
Set oFileSystemObject = CreateObject("Scripting.FileSystemObject")
sShellRndTmpFile = oShellObject.ExpandEnvironmentStrings("%temp%") & oFileSystemObject.GetTempName
On Error Resume Next
' Execute la commande et effectue la redirection dans un fichier
oShellObject.Run sCommandStringToExecute & " > " & sShellRndTmpFile, 0, True
iErr = Err.Number
On Error GoTo 0
If iErr <> 0 Then
fShellRun = ""
Exit Function
End If
On Error GoTo err_skip
' On transmet à la fonction le contenu du fichier
fShellRun = oFileSystemObject.OpenTextFile(sShellRndTmpFile, 1).ReadAll
oFileSystemObject.DeleteFile sShellRndTmpFile, True
Exit Function
err_skip:
fShellRun = ""
oFileSystemObject.DeleteFile sShellRndTmpFile, True
End Function