Exemplo n.º 1
0
        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);
        }
Exemplo n.º 2
0
        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;
            }

        }