Уведомление о подключении 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