Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

[VBScript] Savoir si on communique sur une carte Wireless ou ether

8 réponses
Avatar
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 & "\root\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

8 réponses

Avatar
Michel Claveau
Bonjour !

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
Avatar
Méta-MCI
Re

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)
Avatar
SebD
Merci pour votre réponse

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


Bonjour !

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





Avatar
Méta-MCI
Re

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
Avatar
SebD
Merci pour toutes vos réponses

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


Re

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





Avatar
Méta-MCI
'soir !

Là, j'ai juste deux exemples :

CPU1 :
[00000004] LAN-Express AS IEEE 802.11g miniPCI Adapter

CPU 2 :
[00000012] Intersil PRISM Wireless LAN PCI Card


Ceci étant, lorsque je fais un IPCONFIG ou IPCONFIG /ALL j'ai aussi
l'indication des types de contrôleurs réseau.

@+

MCI
Avatar
merlin01fr
Bonjour

la classe win32 qui t'interesse est : Win32_NetworkAdapterConfiguration

Si tu veux tu peux te servir du releve d'inventaire que j'ai cree en vbs qui
te permettra d'extraire les informations souhaitée ou d'y rajouter ton code
pour y executer tes manipulations en fonction du resultat trouvé.

le lien ci dessous te permettra d'extraire les classes win32 en fichier vbs

http://www.scriptovore.com/mambo/index.php?option=com_simpleboard&ItemidF&func=view&id)1&catid=4

Optionnel pour ton cas (mais incomplet je ne le rajoute pas)
et le lien ci dessous te permettra d'extraire les fichiers vbs generes par
le script ci dessus en format csv + plein d'autre choses interessantes

http://www.scriptovore.com/mambo/index.php?option=com_simpleboard&ItemidF&func=view&id69&catid=4

en esperant que ceci te convienne

Cordialement




'soir !

Là, j'ai juste deux exemples :

CPU1 :
[00000004] LAN-Express AS IEEE 802.11g miniPCI Adapter

CPU 2 :
[00000012] Intersil PRISM Wireless LAN PCI Card


Ceci étant, lorsque je fais un IPCONFIG ou IPCONFIG /ALL j'ai aussi
l'indication des types de contrôleurs réseau.

@+

MCI








Avatar
merlin01fr
oups complement d'information

la classe qui t'interesse est Win32_NetworkAdapter pas la
Win32_NetworkAdapterConfiguration

et en l'occurence dans cette classe se trouve la propriete :
ConfigManagerErrorCode qui te retourne une erreur 22 si la carte est
desactivee

il ne te reste plus qu'a creer les conditions que tu veux voir ressortir ou
sur lesquelles tu dois appliquer un traitement .

Cordialement


Bonjour

la classe win32 qui t'interesse est : Win32_NetworkAdapterConfiguration

Si tu veux tu peux te servir du releve d'inventaire que j'ai cree en vbs qui
te permettra d'extraire les informations souhaitée ou d'y rajouter ton code
pour y executer tes manipulations en fonction du resultat trouvé.

le lien ci dessous te permettra d'extraire les classes win32 en fichier vbs

http://www.scriptovore.com/mambo/index.php?option=com_simpleboard&ItemidF&func=view&id)1&catid=4

Optionnel pour ton cas (mais incomplet je ne le rajoute pas)
et le lien ci dessous te permettra d'extraire les fichiers vbs generes par
le script ci dessus en format csv + plein d'autre choses interessantes

http://www.scriptovore.com/mambo/index.php?option=com_simpleboard&ItemidF&func=view&id69&catid=4

en esperant que ceci te convienne

Cordialement




'soir !

Là, j'ai juste deux exemples :

CPU1 :
[00000004] LAN-Express AS IEEE 802.11g miniPCI Adapter

CPU 2 :
[00000012] Intersil PRISM Wireless LAN PCI Card


Ceci étant, lorsque je fais un IPCONFIG ou IPCONFIG /ALL j'ai aussi
l'indication des types de contrôleurs réseau.

@+

MCI