[VBScript] Savoir si on communique sur une carte Wireless ou ether
Le
SebD
Bonjour
Je cherche à savoir si mon pc communique par ethernet ou par wireless (je
mets à part les questions de routage et de metric). Je cherche à savoir si
soit l'interface ethernet est montée et opérationnelle (adresse ip valide)
ou si c'est l'interface wireless qui est montée.
Pour l'instant, j'ai suivi plusieurs pistes
Par WMI
Code:
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "oot\CIMV2")
Set colItems = objWMIService.ExecQuery("SELECT * FROM
Win32_NetworkAdapter", "WQL", _
wbemFlagReturnImmediately +
wbemFlagForwardOnly)
For Each objItem In colItems
' detection du type de carte
If objItem.NetConnectionStatus = 2 Or objItem.NetConnectionStatus = 7 Then
TypeCarte = ""
Select Case objItem.AdapterType
Case "Wireless"
TypeCarte = "Wireless"
Case "Ethernet 802.3"
If InStr(LCase(objItem.ProductName), "wireless") <> 0 Then
TypeCarte = "Wireless"
End If
If InStr(LCase(objItem.ProductName), "ethernet") <> 0 Then
TypeCarte = "Ethernet"
End If
End Select
If TypeCarte = "Ethernet" Then
Ethernetconnected = 1
End If
If TypeCarte = "Wireless" Then
WirelessConnected = 1
End If
End If
Next
If Ethernetconnected = 1 Then
List1.AddItem ("Reseau Ethernet détecté")
End If
If WirelessConnected = 1 Then
List1.AddItem ("Reseau sans fil détecté")
End If
If Ethernetconnected = 1 Then
List1.AddItem ("Reseau Ethernet selectionné")
Else
If WirelessConnected = 1 Then
List1.AddItem ("Reseau sans fil selectionné")
Else
List1.AddItem ("Reseau non détecté")
End If
End If
Le soucis est que objItem.AdapterType est toujours positioné à "Ethernet
802.3" même pour une carte Wireless et pour une carte 1394
Je fais donc la distinction avec le nom de la carte, s'il y a "wireless" ou
"ethernet" dans le nom. Mais ce truc ne marche pas.
J'ai essaye avec netsh
netsh
diag
ping ip
ca ne marche pas non plus
Savez-vous à quel endroit je peux trouver l'information, dans "propriétés
des favoris réseaux" on voit bien la distinction entre "Connexion au réseau
local" et "Connexion sans fil".
Pour info, mon programme doit pouvoir marcher dans plusieurs langues
Cordialement
SebD
Je cherche à savoir si mon pc communique par ethernet ou par wireless (je
mets à part les questions de routage et de metric). Je cherche à savoir si
soit l'interface ethernet est montée et opérationnelle (adresse ip valide)
ou si c'est l'interface wireless qui est montée.
Pour l'instant, j'ai suivi plusieurs pistes
Par WMI
Code:
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "oot\CIMV2")
Set colItems = objWMIService.ExecQuery("SELECT * FROM
Win32_NetworkAdapter", "WQL", _
wbemFlagReturnImmediately +
wbemFlagForwardOnly)
For Each objItem In colItems
' detection du type de carte
If objItem.NetConnectionStatus = 2 Or objItem.NetConnectionStatus = 7 Then
TypeCarte = ""
Select Case objItem.AdapterType
Case "Wireless"
TypeCarte = "Wireless"
Case "Ethernet 802.3"
If InStr(LCase(objItem.ProductName), "wireless") <> 0 Then
TypeCarte = "Wireless"
End If
If InStr(LCase(objItem.ProductName), "ethernet") <> 0 Then
TypeCarte = "Ethernet"
End If
End Select
If TypeCarte = "Ethernet" Then
Ethernetconnected = 1
End If
If TypeCarte = "Wireless" Then
WirelessConnected = 1
End If
End If
Next
If Ethernetconnected = 1 Then
List1.AddItem ("Reseau Ethernet détecté")
End If
If WirelessConnected = 1 Then
List1.AddItem ("Reseau sans fil détecté")
End If
If Ethernetconnected = 1 Then
List1.AddItem ("Reseau Ethernet selectionné")
Else
If WirelessConnected = 1 Then
List1.AddItem ("Reseau sans fil selectionné")
Else
List1.AddItem ("Reseau non détecté")
End If
End If
Le soucis est que objItem.AdapterType est toujours positioné à "Ethernet
802.3" même pour une carte Wireless et pour une carte 1394
Je fais donc la distinction avec le nom de la carte, s'il y a "wireless" ou
"ethernet" dans le nom. Mais ce truc ne marche pas.
J'ai essaye avec netsh
netsh
diag
ping ip
ca ne marche pas non plus
Savez-vous à quel endroit je peux trouver l'information, dans "propriétés
des favoris réseaux" on voit bien la distinction entre "Connexion au réseau
local" et "Connexion sans fil".
Pour info, mon programme doit pouvoir marcher dans plusieurs langues
Cordialement
SebD

Poser une question


Une solution en invite de commande (ou batch) :
netsh diag show ip
Astuce : après avoir tapé la ligne, ne pas oublier :
- d'appuyer sur la touche [Entrée]
- de lire le résultat
;o)
--
@-salutations
Michel Claveau
Et voici, ci-dessous, la même chose, en VBS.
Vous remarqurez que le VBS est 18 fois plus gros (nb de lignes) que le
batch.
CQFD
MCI
Dim ipadapter
Dim shell
Dim commande
dim exec
dim resultat
if wscript.Arguments.Count then
message = "inutile d'utiliser des arguments ou paramètres"
msgbox message
end if
commande="netsh diag show ip"
Set shell = wscript.createobject("WScript.Shell")
Set exec = shell.exec(commande)
resultat = exec.Stdout.ReadLine
resultat = exec.Stdout.ReadLine
resultat = resultat & exec.Stdout.ReadLine
rem la ligne ci-dessous, facultative, donne aussi l'adresse IP
rem resultat = resultat & vbCrLf & exec.Stdout.ReadLine
msgbox(resultat)
Malheureusement, dans les cartes réseaux qu'ils affichent, je ne sais pas si
ce sont des cartes qui communiquent par WIFI ou par ethernet
A+
SebD
Sur 3 machines, j'ai l'indication 802.11g ou 801.11b ou 802.11
Mais, effectivement, ce n'est pas généralisable. Ceci dit, netsh peut donner
beaucoup d'informations ; peut-être y en a t'il une qui conviendrait ?
Faire "netsh ?" pour avoir plus de détails (et "netsh XXX ?")
@+
MCI
C'est vraiment un problème de savoir comment fait windows pour savoir si une
carte réseau doit etre appele "connexion au réseau local xx" au "connexion
réseau sans fil"
Est-ce que c'est dans le driver de la carte ? dans ce cas, où l'information
est-elle stockée ensuite ?
Connaissez-vous des forums plus spécialisés de ce domaine ?
Pour Méta-MCI
A quel niveau tu as vu 802.11g
Avec la commande "netsh diag show ip"
Le nom de la carte est "Intel(R) PRO/Wireless 2200BG Network Connection"
A+
Sebd