Distingué une conexion LAN, d'une internet

paf24 Messages postés 20 Date d'inscription mardi 25 février 2003 Statut Membre Dernière intervention 12 janvier 2005 - 30 mai 2004 à 11:46
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 - 30 mai 2004 à 17:24
Bonjour,

j'utilise simultanément une connexion sur réseau Local et une connexion internet.

mon but est de déclenchement une fonction seulement quand je me connecte à internet.

l'api internetgetconnectedstate renvoie true aussi bien quand internet est lancé que quand le LAN est actif ce qui me pose problème.

de plus, la valeur retourné "ret" sur la commande internetgetconnectedstate ret, 0& vaut 81 ou 82 selon si le 2nd pc relié au LAN est allumé ou non. Je ne peux donc pas me fié à cette valeur.

Est-ce que quelqu'un connaitrait une fonction ou une api qui me permettrait donc de bien distingué le fait que je sois connecté sur le LAN (en permance donc) ou que je me connecte sur internet ?
En fait, de l'api internetgetconnectedstate, il faudrait exclure le LAN de son champ d'action, mais comment ?

Paf24

2 réponses

cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
30 mai 2004 à 16:22
Salut,
Dans ma boîte, g du développer un truc me permettant de savoir si un poste accédait à Internet ou simplement à l'intranet. La connexion extérieure étant autorisée ou non par un proxy.
Pour cela, j'utilise le composant "Microsoft Internet Transfert Control 6.0 (SP6)" (msinet.ocx) et le code suivant :

' ----------------------------------
' DETECTION SI ACCES INTERNET VALIDE
' ----------------------------------
Function Acces_Internet() As Boolean
Dim ret

Form1.Inet1.AccessType = icUseDefault
Form1.Inet1.OpenURL "http://www.microsoft.com"
ret = Form1.Inet1.GetHeader("Server")
Form1.Inet1.Cancel

If InStr(1, ret, "Microsoft", 1) Then
Acces_Internet = True
Else
Acces_Internet = False
End If

End Function

Explication, j'essaie de le header d'une adresse web (en l'occurence microsoft mais tu peux choisir autre chose) si je le récupère c que la machine a un accès Internet valide.

Maintenant, si ton modem est allumé et s'il est branché, ça te répondra Vrai même si IE n'est pas ouvert.

Faudrait peut-être en plus détecter si IE est ouvert. Je crois qu'il y avait qque chose là-dessus ici.

Cordialement

CanisLupus
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
30 mai 2004 à 17:24
Je viens de retrouver un truc pour savoir si IE est lancé mais je ne sais pas si ça fonctionne en XP.

Const TH32CS_SNAPHEAPLIST = &H1
Const TH32CS_SNAPPROCESS = &H2
Const TH32CS_SNAPTHREAD = &H4
Const TH32CS_SNAPMODULE = &H8
Const TH32CS_SNAPALL = (TH32CS_SNAPHEAPLIST Or TH32CS_SNAPPROCESS Or TH32CS_SNAPTHREAD Or TH32CS_SNAPMODULE)
Const TH32CS_INHERIT = &H80000000
Const MAX_PATH As Integer = 260
Private Type PROCESSENTRY32
dwSize As Long
cntUsage As Long
th32ProcessID As Long
th32DefaultHeapID As Long
th32ModuleID As Long
cntThreads As Long
th32ParentProcessID As Long
pcPriClassBase As Long
dwFlags As Long
szExeFile As String * MAX_PATH
End Type
Private Declare Function CreateToolhelp32Snapshot Lib "Kernel32" (ByVal lFlags As Long, ByVal lProcessID As Long) As Long
Private Declare Function Process32First Lib "Kernel32" (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long
Private Declare Function Process32Next Lib "Kernel32" (ByVal hSnapShot As Long, uProcess As PROCESSENTRY32) As Long
Private Declare Sub CloseHandle Lib "Kernel32" (ByVal hPass As Long)
Function Detection_Process(p As String) As Boolean
Dim hSnapShot As Long, uProcess As PROCESSENTRY32
Dim r As Long
Dim NomFichier As String

' Création d'une vue sur les process en cours
hSnapShot = CreateToolhelp32Snapshot(TH32CS_SNAPALL, 0&)

' Initialisation de la taille du ProcessEntry-type
uProcess.dwSize = Len(uProcess)

' Retourne les infos concernant le 1er processus rencontré
r = Process32First(hSnapShot, uProcess)

Do While r
' Elimination des caractères null
NomFichier = Split(uProcess.szExeFile, Chr(0))(0)
' Récupération du nom de fichier
NomFichier = Right$(NomFichier, Len(NomFichier) - InStrRev(NomFichier, ""))
If NomFichier = p Then
Detection_Process = True
End If
' Infos sur le processus suivant
r = Process32Next(hSnapShot, uProcess)
Loop

CloseHandle hSnapShot

End Function

Private Sub Form_Load()

If Detection_Process("IEXPLORE.EXE") Then MsgBox "Internet Explorer est lancé"

End Sub

Cordialement

CanisLupus
Rejoignez-nous