예제 #1
0
        private void MainForm_Load(object sender, EventArgs e)
        {
            if (Environment.OSVersion.Version.Major >= 6.0) // если версия выше, делаём всё черным (черный GDI прозрачен)
            {
                if (DwmApi.DwmIsCompositionEnabled())
                {
                    button1.BackColor = Color.Black;
                    button2.BackColor = Color.Black;
                    button3.BackColor = Color.Black;
                    button4.BackColor = Color.Black;
                    button5.BackColor = Color.Black;
                    panel1.BackColor = Color.Black;
                    OnClientArea();
                }
            }

            if (!System.IO.Directory.Exists(vars.VARS.Directory)) // если директории каким-то образом не оказалось, создаём её и кидаем туда файл ошибок
            {
                System.IO.Directory.CreateDirectory(vars.VARS.Directory);
                System.IO.File.Create(vars.VARS.Directory + "errors.txt");
            }

            bool flag = true;
            InternetConnectionState flags = 0;
            bool InternetConnect = InternetGetConnectedState(ref flags, 0); // проверяем соединение с интернетом

            while (!InternetConnect) // пока не появится, будет цикл повторяться
            {
                if (flag)
                {
                    MessageBox.Show("Сервер временно недоступен!\nПрограмма подключится, когда появится соединение!", "Внимание!", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    flag = false;
                    notifyIcon1.Visible = true;
                }
                Application.DoEvents();
                Thread.Sleep(2000);
                InternetConnect = InternetGetConnectedState(ref flags, 0);
            }

            AccessForm acc = new AccessForm(); // создаём форму авторизации
            if (acc.ShowDialog() == DialogResult.OK) // если ок, выполняем
            {
                GeneralMethods.tryGetSettings(); // читаем настройки
                if (!vars.VARS.ExitOnCloser) // устанавливаем режим сворачивания
                    MinimizeBox = false;
                if (!vars.VARS.Sound) // устанавливаем в верное положение картинку звука
                    button1.Image = global::IMV.Properties.Resources._1299773905_no_sound;
                wait = new System.Windows.Forms.Timer(); // создаём таймер
                wait.Interval = 4000;
                wait.Tick += new EventHandler(wait_Tick);
                wait.Start(); // запускаем таймер
                Thread newThrd = new Thread(new ThreadStart(start.getProfiles)); // Получение списка контактов
                newThrd.Start();
                while (newThrd.IsAlive) // приложение отправляет сообщения виндовс пока поток не завершился
                    Application.DoEvents();
                wait.Stop();
                wait.Dispose();
                if (wtcreate) // если открывалось окно ожидания, то уничтожаем его
                    wt.Dispose();
                acc.Dispose();
                GeneralMethods.AddItem(); // добавляем контакты в список
                if (vars.VARS.Frequency) // если включена настройка
                    GeneralMethods.tryGetFrequency(); // пытаемся загрузить частоту
                myContactList1.Sort(); // сортируем
                StartWork(); // Запуск "отлова" обновлений
            }
            else
                Application.Exit();
        }
예제 #2
0
        private void GetNewToken(object state)
        {
            try
            {
                Invoke(new MethodInvoker(() =>
                                          {
                                              AccessForm acc = new AccessForm();
                                              acc.ShowDialog();
                                              if (acc.DialogResult == DialogResult.OK)
                                                  acc.Close();
                                              else
                                              {
                                                  MessageBox.Show("Сервер вас отключил!\nПриложение автоматически перезапустится\n и постарается восстановить связь.", "Внимание!", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                                                  Application.Exit();
                                              }
                                          }
                                          )); // инвочим метод, потому что находимся в другом потоке. Получаем новые данные сессии
                timerKey.Change((vars.VARS.Expire - 60) * 1000, (vars.VARS.Expire - 60) * 1000); // перезапускаем таймер с новым expire
            }

            catch (Exception exe)
            {
                GeneralMethods.WriteError(exe.Source, exe.Message, exe.TargetSite);
            }
        }