private void ApplyWincos() { ProgressBarPerform = new KeyValuePair<bool, int>(true, 100); if ((object)Dispatcher.Invoke(new Func<object>(() => { return comboBoxAdapters.SelectedValue; })) != null) { NetworkManagement NM = new NetworkManagement(); try { bool ipmark = false; bool gatemark = false; bool netbiosmark = true; //Проверим Netbios, если не равен DISABLED, то выключим if (NM.GetTcpipNetbiosState((string)Dispatcher.Invoke(new Func<string>(() => (comboBoxAdapters.SelectedItem as NetworkAdapters).AdapterDescriptionFull))) != 2) netbiosmark = NM.SetTcpipNetbios(2, (string)Dispatcher.Invoke(new Func<string>(() => (comboBoxAdapters.SelectedItem as NetworkAdapters).AdapterDescriptionFull))); ipmark = NM.SetIP(Vips.wincIP, Vips.wincMask, (string)Dispatcher.Invoke(new Func<string>(() => (comboBoxAdapters.SelectedItem as NetworkAdapters).AdapterDescriptionFull))); // Thread.Sleep(3000); if (!ipmark) { _log.Error(String.Format("Не удалось изменить параметры сети IP={0}, mask={1}, adaperName={2}, adapterGuid={3}", Vips.wincIP, Vips.wincMask, (string)Dispatcher.Invoke(new Func<string>(() => (comboBoxAdapters.SelectedItem as NetworkAdapters).AdapterDescriptionFull)), (string)Dispatcher.Invoke(new Func<string>(() => (comboBoxAdapters.SelectedItem as NetworkAdapters).GUID)))); VentsTools.currentSettingString = "Не удалось поменять IP адрес"; } gatemark = NM.SetGateway(Vips.wincGate, (string)Dispatcher.Invoke(new Func<string>(() => (comboBoxAdapters.SelectedItem as NetworkAdapters).AdapterDescriptionFull))); // Thread.Sleep(3000); if (!gatemark) { _log.Error(String.Format("Не удалось изменить параметры сети Gateway={0}, adaperName={1}, adapterGuid={2}", Vips.wincGate, (string)Dispatcher.Invoke(new Func<string>(() => (comboBoxAdapters.SelectedItem as NetworkAdapters).AdapterDescriptionFull)), (string)Dispatcher.Invoke(new Func<string>(() => (comboBoxAdapters.SelectedItem as NetworkAdapters).GUID)))); VentsTools.currentSettingString = "Не удалось поменять шлюз"; } if (!ipmark && !gatemark) VentsTools.currentSettingString = "Не удалось изменить настройки сети"; else { bool compl = false; string message = "Текущий IP адрес - "; message += NM.GetIP(ref compl, (string)Dispatcher.Invoke(new Func<string>(() => (comboBoxAdapters.SelectedItem as NetworkAdapters).AdapterDescriptionFull)))[0]; message += "\r\nТекущая сеть: Wincos"; if (netbiosmark == false) message += "\r\nНе удалось поменять настройки Netbios"; VentsTools.currentSettingString = message; Dispatcher.Invoke(new Action(() => wincRect.Stroke = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#FFE8F5FC")))); Dispatcher.Invoke(new Action(() => wincRect.Fill = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#FFE8F5FC")))); Dispatcher.Invoke(new Action(() => belsRect.Stroke = new SolidColorBrush(Colors.Transparent))); Dispatcher.Invoke(new Action(() => belsRect.Fill = new SolidColorBrush(Colors.Transparent))); //Запишем настройки в реестр //начнем а гуида сетевой RegistryWorker.WriteKeyValue(Microsoft.Win32.RegistryHive.LocalMachine, VentsConst._SETTINGSLOCATION, Microsoft.Win32.RegistryValueKind.String, VentsConst._LASTADPTGUID, (string)Dispatcher.Invoke(new Func<string>(() => (comboBoxAdapters.SelectedItem as NetworkAdapters).GUID))); //запишем настройки в стринг массиве для этого гуида string[] settArr = new string[] { Vips.belsIP, Vips.belsMask, Vips.belsGate, Vips.wincIP, Vips.wincMask, Vips.wincGate }; RegistryWorker.WriteKeyValue(Microsoft.Win32.RegistryHive.LocalMachine, VentsConst._ADAPTERSLOCATION, Microsoft.Win32.RegistryValueKind.MultiString, (string)Dispatcher.Invoke(new Func<string>(() => (comboBoxAdapters.SelectedItem as NetworkAdapters).GUID)), settArr); //запишем последнюю нажатую кнопку (выбранную сеть) RegistryWorker.WriteKeyValue(Microsoft.Win32.RegistryHive.LocalMachine, VentsConst._SETTINGSLOCATION, Microsoft.Win32.RegistryValueKind.String, VentsConst._LASTAPPLYBUTTONCLICKED, "WINCOS"); } } catch { _log.Error(String.Format("Недопустимое значение маски и IP адреса IP={0}, mask={1}, adaperName={2}, adapterGuid={3}", Vips.wincIP, Vips.wincMask, (string)Dispatcher.Invoke(new Func<string>(() => (comboBoxAdapters.SelectedItem as NetworkAdapters).AdapterDescriptionFull)), (string)Dispatcher.Invoke(new Func<string>(() => (comboBoxAdapters.SelectedItem as NetworkAdapters).AdapterDescriptionFull)))); VentsTools.currentSettingString = "Недопустимое значение маски и IP адреса!"; ProgressBarPerform = new KeyValuePair<bool, int>(false, 100); Dispatcher.Invoke(new Action(() => { applyBelsbutt.IsEnabled = true; applyWincbutt.IsEnabled = true; })); } } else { _log.Info("Нажата кнопка \"Применить настройки Белсолод\" без выбранного сетевого адаптера"); VentsTools.currentSettingString = "Сначала Выберите сетевой адаптер!"; } ProgressBarPerform = new KeyValuePair<bool, int>(false, 100); Dispatcher.Invoke(new Action(() => { applyBelsbutt.IsEnabled = true; applyWincbutt.IsEnabled = true; })); }
private void Config() { ProgressBarPerform = new KeyValuePair<bool, int>(true, 100); //прочитаем из реестра guid последнего использованого адаптера, если такового нет оставим пустое и будем ждать пока пользователь выберет на комбобоксе нужный string adaptGUID = String.Empty; try { adaptGUID = (string)RegistryWorker.GetKeyValue<string>(Microsoft.Win32.RegistryHive.LocalMachine, VentsConst._SETTINGSLOCATION, VentsConst._LASTADPTGUID); } catch (System.IO.IOException) { } catch (Exception ex) { _log.Error(ex.Message + " (чтение из реестра)"); VentsTools.currentSettingString = "Ошибка чтения реестра"; } if (adaptGUID == String.Empty) { VentsTools.currentSettingString = "Выберите сетевой адаптер"; Dispatcher.Invoke(new Action(() => comboBoxAdapters.SelectionChanged += new SelectionChangedEventHandler(comboBoxAdapters_SelectedIndexChangedSuspended))); _cfgthread.Suspend(); Dispatcher.Invoke(new Action(() => comboBoxAdapters.SelectionChanged -= new SelectionChangedEventHandler(comboBoxAdapters_SelectedIndexChangedSuspended))); } else { int index = 0; foreach (NetworkAdapters adp in comboBoxAdapters.ItemsSource) { if (adaptGUID == adp.GUID) { Dispatcher.Invoke(new Action(() => comboBoxAdapters.SelectedIndex = index)); break; } index++; } if ((bool)Dispatcher.Invoke(new Func<bool>(() => comboBoxAdapters.SelectedIndex == -1))) { _log.Info(String.Format("Сетевой адаптер GUID={0} недоступен", adaptGUID)); VentsTools.currentSettingString = "Последний использованный адаптер недоступен, выберите другой"; VentsTools.currentSettingString = "Выберите сетевой адаптер"; Dispatcher.Invoke(new Action(() => comboBoxAdapters.SelectionChanged += new SelectionChangedEventHandler(comboBoxAdapters_SelectedIndexChangedSuspended))); _cfgthread.Suspend(); Dispatcher.Invoke(new Action(() => comboBoxAdapters.SelectionChanged -= new SelectionChangedEventHandler(comboBoxAdapters_SelectedIndexChangedSuspended))); } } Vips = GetIPSettings((string)Dispatcher.Invoke(new Func<string>(() => (comboBoxAdapters.SelectedItem as NetworkAdapters).GUID))); bool state1 = false; bool state2 = false; bool state3 = false; NetworkManagement NM = new NetworkManagement(); //Получим текущие настройки на машине, для wincos network запишем дефолтные try { if (Vips.belsIP == null) Vips.belsIP = NM.GetIP(ref state1, (string)Dispatcher.Invoke(new Func<string>(() => (comboBoxAdapters.SelectedItem as NetworkAdapters).AdapterDescriptionFull)))[0]; if (Vips.belsMask == null) Vips.belsMask = NM.GetSubnetMask(ref state2, (string)Dispatcher.Invoke(new Func<string>(() => (comboBoxAdapters.SelectedItem as NetworkAdapters).AdapterDescriptionFull)))[0]; if (Vips.belsGate == null) Vips.belsGate = NM.GetGateway(ref state3, (string)Dispatcher.Invoke(new Func<string>(() => (comboBoxAdapters.SelectedItem as NetworkAdapters).AdapterDescriptionFull)))[0]; if (Vips.wincIP == null) Vips.wincIP = VentsConst._DEFAULTWINCOSIP; if (Vips.wincMask == null) Vips.wincMask = VentsConst._DEFAULTWINCOSMASK; if (Vips.wincGate == null) Vips.wincGate = VentsConst._DEFAULTWINCOSGATEWAY; } catch (Exception ex) { _log.Error(ex); } Dispatcher.Invoke(new Action(() => { belsIPadr.IsEnabled = true; belsMask.IsEnabled = true; belsGate.IsEnabled = true; wincIPadr.IsEnabled = true; wincMask.IsEnabled = true; wincGate.IsEnabled = true; applyBelsbutt.IsEnabled = true; applyWincbutt.IsEnabled = true; })); //загрузим последнюю нажатую кнопку string applyButtonClicked = String.Empty; try { applyButtonClicked = RegistryWorker.GetKeyValue<string>(Microsoft.Win32.RegistryHive.LocalMachine, VentsConst._SETTINGSLOCATION, VentsConst._LASTAPPLYBUTTONCLICKED); } catch (System.IO.IOException) { } catch (Exception ex) { _log.Error(ex.Message + " (чтение из реестра)"); VentsTools.currentSettingString = "Ошибка чтения реестра"; } if (applyButtonClicked == "BELSOLOD") Dispatcher.Invoke(new Action(() => { belsRect.Stroke = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#FFE8F5FC")); belsRect.Fill = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#FFE8F5FC")); })); else if (applyButtonClicked == "WINCOS") Dispatcher.Invoke(new Action(() => { wincRect.Stroke = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#FFE8F5FC")); wincRect.Fill = new SolidColorBrush((Color)ColorConverter.ConvertFromString("#FFE8F5FC")); })); else { VentsTools.currentSettingString = "Выберите сеть для работы"; ProgressBarPerform = new KeyValuePair<bool, int>(false, 100); return; } VentsTools.currentSettingString = String.Format("Последние использованые настройки: {0}", applyButtonClicked == "BELSOLOD" ? "Сеть Белсолод" : "Сеть Wincos"); ProgressBarPerform = new KeyValuePair<bool, int>(false, 100); }
private void comboBoxAdapters_SelectedIndexChanged(object sender, SelectionChangedEventArgs e) { if (_cfgthread.ThreadState == ThreadState.Running || _cfgthread.ThreadState == ThreadState.Suspended) return; else { bool state = false; NetworkManagement NM = new NetworkManagement(); Vips = GetIPSettings((comboBoxAdapters.SelectedItem as NetworkAdapters).GUID); if (Vips.belsIP == null) Vips.belsIP = NM.GetIP(ref state, (string)Dispatcher.Invoke(new Func<string>(() => (comboBoxAdapters.SelectedItem as NetworkAdapters).AdapterDescriptionFull)))[0]; if (Vips.belsMask == null) Vips.belsMask = NM.GetSubnetMask(ref state, (string)Dispatcher.Invoke(new Func<string>(() => (comboBoxAdapters.SelectedItem as NetworkAdapters).AdapterDescriptionFull)))[0]; if (Vips.belsGate == null) Vips.belsGate = NM.GetGateway(ref state, (string)Dispatcher.Invoke(new Func<string>(() => (comboBoxAdapters.SelectedItem as NetworkAdapters).AdapterDescriptionFull)))[0]; if (Vips.wincIP == null) Vips.wincIP = VentsConst._DEFAULTWINCOSIP; if (Vips.wincMask == null) Vips.wincMask = VentsConst._DEFAULTWINCOSMASK; if (Vips.wincGate == null) Vips.wincGate = VentsConst._DEFAULTWINCOSGATEWAY; } }