2010-02-25 23 views
4

Je suis très nouveau à Win7 et WMI. S'il vous plaît me conseiller où voir pour un point d'accès actif de WiFi et comment obtenir ssid/rssi pour chaque point d'accès.Comment obtenir SSID et RSSI pour Win7 en utilisant C#

Je vérifiions:

ManagementClass mc = new ManagementClass("root\\WMI", "MSNdis_80211_ServiceSetIdentifier", null);   
ManagementObjectSearcher searcher1 = new ManagementObjectSearcher(@"root\wmi","SELECT * FROM MSNdis_80211_BSSIList"); 

mais je m'y suis 0. Est-ce support de classe Win7? Quelqu'un peut-il aider?

Répondre

0

Au lieu de WMI, vous pouvez utiliser le Managed Wifi API.

Cocher cette question Get SSID of the wireless network I am connected to with C# .Net on Windows Vista

quelque temps un aller i écrit un exemple en utilisant delphi-prisme, est très similaire à C#. http://theroadtodelphi.wordpress.com/2009/09/30/detecting-wifi-networks-using-delphi-prism/

+0

Thanx RRUZ, En fait, j'utiliser déjà réussi wifi api mais la fonction wlan ne peut pas être appliquée et renvoie "Le type ou le nom de l'espace de noms 'Wlan' n'a pas pu être trouvé (manque-t-il une directive using ou une référence d'assembly?)". J'utilise Visual Studio 2010 et Windows 7. Y at-il des fonctionnalités dans Visual Studio 2010 qui peuvent aider à obtenir SSID et RSSI à partir de Windows 7. – ailhaddin

5

J'ai eu un problème similaire où je avais besoin pour obtenir le SSID du réseau Wifi connecté actuellement, mais ne me sentais comme la création d'une enveloppe pour l'API en raison de sa complexité alors pensé pourquoi ne pas utiliser netsh

 ProcessStartInfo info = new ProcessStartInfo("netsh", "wlan show interfaces"); 
     info.WorkingDirectory = @"%WINDIR%\system32"; 
     info.WindowStyle = System.Diagnostics.ProcessWindowStyle.Hidden; 
     info.CreateNoWindow = true; 
     info.RedirectStandardOutput = true; 
     info.UseShellExecute = false; 
     System.Diagnostics.Process proc = new System.Diagnostics.Process(); 
     proc.StartInfo = info; 
     proc.Start(); 

alors vous pouvez simplement récupérer la sortie de proc.StandardOutput.ReadToEnd(); analyser ce que vous voulez de la chaîne:

"\r\n There is 1 interface on the system: \r\n\r\n 
Name     : Wireless Network Connection\r\n 
Description   : Atheros AR9285 Wireless Network Adapter\r\n 
GUID     : xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx\r\n 
Physical address  : xx:xx:xx:xx:xx:xx\r\n 
State     : connected\r\n 
SSID     : Dynex2\r\n 
BSSID     : xx:xx:xx:xx:xx:xx\r\n 
Network type   : Infrastructure\r\n 
Radio type    : 802.11g\r\n 
Authentication   : WPA2-Personal\r\n 
Cipher     : CCMP\r\n 
Connection mode  : Auto Connect\r\n 
Channel    : 1\r\n 
Receive rate (Mbps) : 54\r\n 
Transmit rate (Mbps) : 54\r\n 
Signal     : 100% \r\n 
Profile    : Dynex2 \r\n\r\n 
Hosted network status : Not available\r\n\r\n" 

Beaucoup plus facile à analyser une chaîne que d'écrire un wrapper pour l'API Hope this helps

+0

Comment l'utiliser dans Windows XP,? Je pense que la commande ne fonctionne pas dans XP, Works in Winows 7 – Ahmed