Уведомление о подключении Wi-Fi соединения - C#

Узнай цену своей работы

Формулировка задачи:

Добрый день ! Сделал консольное приложение которое выводит список доступных wi-fi сетей . Потом пишем название сети и вводим пароль . Происходит подключение если все указанно верно . Мне нужно отследить состояние сети ( подключилось , не подключилось и по каким причинам ).
               WlanClient client = new WlanClient();
               string a = "0";
               string b = "0";
               string c = "0";
               string d = "0";
               string e = "0";
               string f = "0";
               foreach (WlanClient.WlanInterface wlanIface in client.Interfaces)
               {
 
                   Wlan.WlanAvailableNetwork[] wlanBssEntries = wlanIface.GetAvailableNetworkList(0);
 
                   foreach (Wlan.WlanAvailableNetwork network in wlanBssEntries)
                   {
                       // назначаем ему имя нашей первой найденой сети, в конце убираем нулевые символы - Trim((char)0)
                      a = System.Text.ASCIIEncoding.ASCII.GetString(network.dot11Ssid.SSID).Trim((char)0);
 
                       // узнаеём дополнительную информацию о сети и так же добавляем её в листвью, но уже в наш только что созданый итем.
                       b=(network.wlanSignalQuality.ToString() + "%"); // качество связи в процентах
                       c=(network.dot11DefaultAuthAlgorithm.ToString().Trim((char)0)); // тип безопасности
                       d=(network.dot11DefaultCipherAlgorithm.ToString().Trim((char)0)); // тип шифрования
                       e=(network.dot11BssType.ToString().Trim((char)0));
                       f=(network.profileName.ToString().Trim((char)0));
 
                       Console.WriteLine("{0,-16} {1,12} {2,15} {3,5} {4,15} {5,5}",a,b,c,d,e,f);
                      
                   }}
               Console.WriteLine(" ");
               Console.WriteLine(" ");
               Console.Write("ProfileName : ");
               String profileName = Console.ReadLine();
               Console.Write("Key : ");
               String key = Console.ReadLine();
               String hex = profileName;
               byte[] hy = Encoding.Unicode.GetBytes(hex);
               String hex2 = BitConverter.ToString(hy);
               hex = hex2.Replace("-", "");
               hex = hex.Replace("00", "");
               Console.WriteLine(hex);
           try
            {
                WlanClient client1 = new WlanClient();
 
                foreach (WlanClient.WlanInterface wlanIface in client.Interfaces)
                {
                    Wlan.WlanAvailableNetwork[] wlanBssEntries = wlanIface.GetAvailableNetworkList(0);
                    foreach (Wlan.WlanAvailableNetwork network in wlanBssEntries)
                    {
                      //  String profileName = "DIR-620";
 
                            String strTemplate="";
                            String authentication="";
 
                            switch ((int)network.dot11DefaultAuthAlgorithm)
                            {
                                case 1: // Open
                                    break;
                                case 2: // SHARED_KEY
                                    break;
                                case 3: // WPA
                                    break;
                                case 4: // WPA_PSK
                                    break;
                                case 5: // WPA_NONE
                                    break;
                                case 6: // RSNA
                                    break;
                                case 7: // RSNA_PSK                           
                                    strTemplate = Properties.Resources.WPA2PSK;
                                    authentication = "WPA2PSK";
                                    String encryption = network.dot11DefaultCipherAlgorithm.ToString().Trim((char)0);
                              //      String key = "76543210";
                                    String profileXml = String.Format(strTemplate, profileName, authentication, encryption, key, hex);
 
                                    wlanIface.SetProfile(Wlan.WlanProfileFlags.AllUser, profileXml, true);
                                    wlanIface.Connect(Wlan.WlanConnectionMode.Profile, Wlan.Dot11BssType.Any, profileName);
                                    break;
 
                                default:
                                    break;
                            }
                        }
                    }
                }
 
            catch (Exception ex)
            {
                    Console.WriteLine(ex.Message);
            }
           Console.ReadLine();
        }
По идее вот кусок кода , но как его адаптировать я не знаю
                  private void OnWlanNotification(ref Wlan.WlanNotificationData notifyData, IntPtr context)
        {
            switch (notifyData.notificationSource)
            {
                case Wlan.WlanNotificationSource.ACM:
                    switch ((Wlan.WlanNotificationCodeAcm)notifyData.notificationCode)
                    {
                        case Wlan.WlanNotificationCodeAcm.ConnectionStart:
                            break;
                        case Wlan.WlanNotificationCodeAcm.ConnectionComplete:
                            break;
                        case Wlan.WlanNotificationCodeAcm.ConnectionAttemptFail:
                            break;
                        case Wlan.WlanNotificationCodeAcm.Disconnecting:
                            break;
                        case Wlan.WlanNotificationCodeAcm.Disconnected:
                            break;
                        case Wlan.WlanNotificationCodeAcm.ScanFail:
                            break;
                    }
                    break;
                case Wlan.WlanNotificationSource.MSM:
                    switch ((Wlan.WlanNotificationCodeMsm)notifyData.notificationCode)
                    {
                        case Wlan.WlanNotificationCodeMsm.Associating:
                            break;
                        case Wlan.WlanNotificationCodeMsm.Associated:
                            break;
                        case Wlan.WlanNotificationCodeMsm.Authenticating:
                            break;
                        case Wlan.WlanNotificationCodeMsm.Connected:
                            break;
                        case Wlan.WlanNotificationCodeMsm.RoamingStart:
                            break;
                        case Wlan.WlanNotificationCodeMsm.RoamingEnd:
                            break;
                        case Wlan.WlanNotificationCodeMsm.Disassociating:
                            break;
                        case Wlan.WlanNotificationCodeMsm.Disconnected:
                            break;
                        case Wlan.WlanNotificationCodeMsm.PeerJoin:
                            break;
                        case Wlan.WlanNotificationCodeMsm.PeerLeave:
                            break;
                        case Wlan.WlanNotificationCodeMsm.AdapterRemoval:
                            break;
                    }
                    break;
            }
 
        }

Решение задачи: «Уведомление о подключении Wi-Fi соединения»

textual
Листинг программы
Wlan.WlanNotificationCodeAcm.ConnectionStart

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.929 из 5
Похожие ответы