OVH Cloud OVH Cloud

C# et Wifi

2 réponses
Avatar
Eric Goutoulli
Bonjour,

Je débute en C#, et je cherche à faire un petit programme qui me
permette de suivre la liaison Wifi d'un poste sous XP.

En gros: Qualité & force du signal et vitesse de connexion (11Mb/s,
2Mb/s........).

Pouvez vous m'aider car je ne trouve pas les api à utiliser;

Je suis en VS 2005 Express Edition.

Par avance Merci

2 réponses

Avatar
Patrick Philippot
Bonjour,

A priori, je ne vois qu'une solution pour manipuler en natif les adaptateurs
réseau, WiFi : utiliser WMI.

Les objets WMI sont accessibles via le namespace System.Management. Utilisez
Reflector pour explorer ce namespace (http://www.aisto.com/roeder/dotnet/)
et les outils mentionnés ci-dessous pour explorer et tester les objets WMI.
Voir un article d'introduction ici:

http://dotnet.developpez.com/tutoriels/wmi1/

La doc Microsoft:

http://msdn.microsoft.com/library/default.asp?url=/downloads/list/wmi.asp

Les outils, dont un browser WMI qui vous aidera beaucoup à trouver les
objets dont vous avez besoin:

http://www.microsoft.com/downloads/details.aspx?FamilyIdd30F853-1120-48DB-8CC5-F2ABDC3ED314&displaylang=en
http://www.microsoft.com/downloads/details.aspx?familyid DFC342-648B-4119-B7EB-783B0F7D1178&displaylang=en
http://www.microsoft.com/downloads/details.aspx?familyid×BA3CD6-18D1-4D05-B11E-4C64192AE97D&displaylang=en


Par exemple, voilà un petit bout de code de récupération des adresses MAC
des adaptateurs d'une machine:

ManagementClass nics = new ManagementClass("Win32_NetworkAdapter");
ManagementObjectCollection nicCol = nics.GetInstances();
foreach (ManagementObject nic in nicCol)
{
Console.WriteLine("Network Card MAC Address = "
+ nic["MACAddress"]);
Console.WriteLine("Network Card Device ID = "
+ nic["DeviceID"]);
}

Un autre exemple (VB - non testé - facilement convertible en C#) de
récupération de la force du signal

Imports System.Management

Public Function GetSignalStrength() As String
On Error GoTo oops

Dim query As ManagementObjectSearcher
Dim Qc As ManagementObjectCollection
Dim Oq As ObjectQuery
Dim Ms As ManagementScope
Dim Co As ConnectionOptions
Dim Mo As ManagementObject
Dim outp As String

Co = New ConnectionOptions
Ms = New ManagementScope("rootwmi")
Oq = New ObjectQuery("SELECT * FROM MSNdis_80211_ReceivedSignalStrength
Where active=true")
query = New ManagementObjectSearcher(Ms, Oq)
Qc = query.Get
outp = ""

For Each Mo In query.Get
outp = outp & Mo("Ndis80211ReceivedSignalStrength") & " "
ISIPActive = Mo("Active")
Next

Return Trim(outp)
Exit Function
oops:
Return Err.Description
End Function

Bonne découverte.

--
Patrick Philippot - Microsoft MVP
MainSoft Consulting Services
www.mainsoft.fr
Avatar
Eric Goutoulli
MERCI ! ! !

je vais de ce pas essayer tout cela !

Eric Goutoulli


Patrick Philippot a écrit :
Bonjour,

A priori, je ne vois qu'une solution pour manipuler en natif les adaptateurs
réseau, WiFi : utiliser WMI.

Les objets WMI sont accessibles via le namespace System.Management. Utilisez
Reflector pour explorer ce namespace (http://www.aisto.com/roeder/dotnet/)
et les outils mentionnés ci-dessous pour explorer et tester les objets WMI.
Voir un article d'introduction ici:

http://dotnet.developpez.com/tutoriels/wmi1/

La doc Microsoft:

http://msdn.microsoft.com/library/default.asp?url=/downloads/list/wmi.asp

Les outils, dont un browser WMI qui vous aidera beaucoup à trouver les
objets dont vous avez besoin:

http://www.microsoft.com/downloads/details.aspx?FamilyIdd30F853-1120-48DB-8CC5-F2ABDC3ED314&displaylang=en
http://www.microsoft.com/downloads/details.aspx?familyid DFC342-648B-4119-B7EB-783B0F7D1178&displaylang=en
http://www.microsoft.com/downloads/details.aspx?familyid×BA3CD6-18D1-4D05-B11E-4C64192AE97D&displaylang=en


Par exemple, voilà un petit bout de code de récupération des adresses MAC
des adaptateurs d'une machine:

ManagementClass nics = new ManagementClass("Win32_NetworkAdapter");
ManagementObjectCollection nicCol = nics.GetInstances();
foreach (ManagementObject nic in nicCol)
{
Console.WriteLine("Network Card MAC Address = "
+ nic["MACAddress"]);
Console.WriteLine("Network Card Device ID = "
+ nic["DeviceID"]);
}

Un autre exemple (VB - non testé - facilement convertible en C#) de
récupération de la force du signal

Imports System.Management

Public Function GetSignalStrength() As String
On Error GoTo oops

Dim query As ManagementObjectSearcher
Dim Qc As ManagementObjectCollection
Dim Oq As ObjectQuery
Dim Ms As ManagementScope
Dim Co As ConnectionOptions
Dim Mo As ManagementObject
Dim outp As String

Co = New ConnectionOptions
Ms = New ManagementScope("rootwmi")
Oq = New ObjectQuery("SELECT * FROM MSNdis_80211_ReceivedSignalStrength
Where active=true")
query = New ManagementObjectSearcher(Ms, Oq)
Qc = query.Get
outp = ""

For Each Mo In query.Get
outp = outp & Mo("Ndis80211ReceivedSignalStrength") & " "
ISIPActive = Mo("Active")
Next

Return Trim(outp)
Exit Function
oops:
Return Err.Description
End Function

Bonne découverte.