2009-01-10 13 views
23

पर मुझे पता है कि कोई नेट क्लास है जो मुझे वायरलेस नेटवर्क के एसएसआईडी को जानने की अनुमति देता है, जिसे मैं कनेक्ट कर रहा हूं। अभी तक मुझे केवल नीचे दी गई लाइब्रेरी मिली है। क्या मैं सबसे अच्छा हूं या मुझे कुछ और उपयोग करना चाहिए? Managed WiFi (http://www.codeplex.com/managedwifi)वायरलेस नेटवर्क का एसएसआईडी प्राप्त करें मैं सी # से कनेक्ट हूं। विंडोज विस्टा

विधि है कि Windows XP के लिए WMI काम करता है कारनामे लेकिन यह Windows Vista के साथ अब और काम नहीं कर रहा है।

उत्तर

22

मैंने लाइब्रेरी का उपयोग करके हल किया। यह काफी प्रदान की कक्षाओं के साथ काम करने के लिए आसान होने के लिए हुई:

सबसे पहले मैं एक WlanClient वस्तु

wlan = new WlanClient(); 

बनाने के लिए किया था और फिर मैं SSIDs पीसी इस कोड के साथ से जुड़ा है की सूची प्राप्त कर सकते हैं :

Collection<String> connectedSsids = new Collection<string>(); 

     foreach (WlanClient.WlanInterface wlanInterface in wlan.Interfaces) 
     { 
      Wlan.Dot11Ssid ssid = wlanInterface.CurrentConnection.wlanAssociationAttributes.dot11Ssid; 
      connectedSsids.Add(new String(Encoding.ASCII.GetChars(ssid.SSID,0, (int)ssid.SSIDLength))); 
     } 
+0

यह काम नहीं करता है। इसमें एक असेंबली भी शामिल है जिसे मैंने ढूंढने के लिए प्रबंधित नहीं किया था! क्या आप मुझे सही दिशा में इंगित कर सकते हैं? – MrAsterisco

+4

@MrAsterisco: आपको ऊपर वर्णित प्रबंधित वाईफाई (http://www.codeplex.com/managedwifi) लाइब्रेरी की आवश्यकता है। – habakuk

2

ऐसा लगता है कि यह तुम क्या चाहते हो जाएगा:

ManagementObjectSearcher searcher = new ManagementObjectSearcher("root\\WMI", 
"SELECT * FROM MSNdis_80211_ServiceSetIdentifier"); 


foreach (ManagementObject queryObj in searcher.Get()) 
{ 
    Console.WriteLine("-----------------------------------"); 
    Console.WriteLine("MSNdis_80211_ServiceSetIdentifier instance"); 
    Console.WriteLine("-----------------------------------"); 

    if(queryObj["Ndis80211SsId"] == null) 
     Console.WriteLine("Ndis80211SsId: {0}",queryObj["Ndis80211SsId"]); 
    else 
    { 
     Byte[] arrNdis80211SsId = (Byte[]) 
     (queryObj["Ndis80211SsId"]); 
     foreach (Byte arrValue in arrNdis80211SsId) 
     { 
      Console.WriteLine("Ndis80211SsId: {0}", arrValue); 
     } 
    } 
} 

http://bytes.com/groups/net-c/657473-wmi-wifi-discovery से

+1

जवाब के लिए धन्यवाद। दुर्भाग्य से यह विधि विंडोज विस्टा के साथ काम नहीं कर रही है। क्या आपके पास कोई अन्य विचार है? – mariosangiorgio

0

आप देशी WLAN एपीआई का उपयोग करने के लिए जा रहे हैं। here के बारे में एक लंबी चर्चा है। स्पष्ट रूप से यह प्रबंधित वाईफाई एपीआई का उपयोग करता है, इसलिए यदि आपके पास एलजीपीएल कोड का उपयोग करने के लिए कोई प्रतिबंध नहीं है तो आपके लिए इसका उपयोग करना आसान होगा।

+0

यही वह है जो मैंने किया था। यह आसान होना प्रतीत होता है। आपके उत्तर के लिए धन्यवाद। – mariosangiorgio

-3

जांच में कुछ और जानकारी वेबसाइट http://wwww.daedaltech.com वे एक dll, जिनके साथ हम टी पा सकते हैं देना है वह एसएसआईडी और मैक पता

+0

प्रदान किया गया पृष्ठ मौजूद नहीं है –

2

हम प्रबंधित वाईफाई लाइब्रेरी का उपयोग कर रहे थे, लेकिन यदि क्वेरी किसी क्वेरी के दौरान डिस्कनेक्ट हो जाती है तो यह अपवाद फेंकता है।

प्रयास करें:

 var process = new Process 
         { 
          StartInfo = 
          { 
           FileName = "netsh.exe", 
           Arguments = "wlan show interfaces", 
           UseShellExecute = false, 
           RedirectStandardOutput = true, 
           CreateNoWindow = true 
          } 
         }; 
     process.Start(); 

     var output = process.StandardOutput.ReadToEnd(); 
     var line = output.Split(new[] { Environment.NewLine }, StringSplitOptions.RemoveEmptyEntries) 
         .FirstOrDefault(l => l.Contains("SSID") && !l.Contains("BSSID")); 
     if (line == null) 
     { 
      return string.Empty; 
     } 
     var ssid = line.Split(new[] { ":" }, StringSplitOptions.RemoveEmptyEntries)[1].TrimStart(); 
     return ssid; 
संबंधित मुद्दे

 संबंधित मुद्दे