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(); }
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); } }