Есть пользователи которые знают С# ?

mishanya9002

Client
Регистрация
04.01.2019
Сообщения
112
Благодарностей
7
Баллы
18
Добрый день я регистрируюсь на сайтах с собственными сим картами, у меня есть форма на C# в которую вписываю код из смс сообщения, и код пошел в переменную, и в поле для ввода на сайте, но есть несколько сайтов которые не сразу высылают в смс коды, а только со второго раза, после нажатия выслать код повторно, (в форме все эти кнопки есть все отрабатывается), но есть "НО", перед тем как выслать код повторно на сайтах тикают таймеры, через сколько можно будет нажать на кнопку либо на ссылку "выслать", эти таймеры у всех разные, где-то 30 сек а где-то 3 минуты, и если проект выполняется через зенку с выключенным инстансом, то соответственно ты не знаешь сколько тебе нужно ждать что-бы выслать код повторно, и я хотел реализовать показ этого таймера на самой форме, но поскольку я не знаю С# решил спросить здесь, как правильно это сделать и в каком направлении двигаться? Вчера на форуме нашел код таймер обратного отсчета который пишет отчет в лог, вот можно ли его как-то положить на форму или кнопку "выслать код повторно", если это сделать сложно то ,можно ли сделать кнопку "выслать код повторно" неактивной на время таймера на сайте ?

Сама форма :
Код:
// создаём форму с указанным значением
var dialogForm = new System.Windows.Forms.Form { Size = new Size(370, 150), ShowIcon = false, Name = "DialogForm", Text = @"Введите смс код",
                FormBorderStyle = System.Windows.Forms.FormBorderStyle.FixedDialog, MinimizeBox = false, MaximizeBox = false };
// Размещаем форму по центру экрана
dialogForm.StartPosition = System.Windows.Forms.FormStartPosition.CenterScreen; 
// Форма поверх всех окон
dialogForm.BringToFront(); 
// поле ввода
var textBox = new System.Windows.Forms.TextBox { Name = "InputText", Size = new Size(320, 20) };
// кладём не форму
dialogForm.Controls.Add(textBox);
// положение на форме
textBox.Location = new Point(20, 20);

// кнопка ok
var okButton = new System.Windows.Forms.Button { Name = "OKButton", Text = @"OK", Size = new Size(75, 23) };
// кладём не форму
dialogForm.Controls.Add(okButton);
// положение на форме
okButton.Location = new Point(20, 50);
// обработка события
okButton.Click += (delegate { dialogForm.DialogResult = System.Windows.Forms.DialogResult.OK; });

// кнопка отмены
var cancelButton = new System.Windows.Forms.Button { Name = "CancelButton", Text = @"Отмена", Size = new Size(75, 23)};
// кладём не форму
dialogForm.Controls.Add(cancelButton);
// положение на форме
cancelButton.Location = new Point(100, 50);
// обработка события
cancelButton.Click += (delegate { dialogForm.DialogResult = System.Windows.Forms.DialogResult.Cancel; });

// кнопка повтор
var repeatButton = new System.Windows.Forms.Button { Name = "RepeatButton", Text = @"Выслать код повторно.", Size = new Size(140, 23) };
// кладём не форму
dialogForm.Controls.Add(repeatButton);
// положение на форме
repeatButton.Location = new Point(200, 50);
// обработка события
repeatButton.Click += (delegate { dialogForm.DialogResult = System.Windows.Forms.DialogResult.No; });

//Действие по клавише интер, но нужно будет в проекте создать проверку переменной sms на пустоту (защита от случайного нажатия интер)
dialogForm.AcceptButton= okButton;
// показываем форму
var dialogResult = dialogForm.ShowDialog();
// Обрабатываем нажатия по кнопками
switch (dialogResult)
{
  case System.Windows.Forms.DialogResult.OK:
      return project.Variables["sms"].Value = textBox.Text.ToString(); // В проекти должна быть переменная sms
  case System.Windows.Forms.DialogResult.Cancel:
    // Выводим сообщение в лог   
      project.SendErrorToLog("","Данные не введены",true);
    // Выходим из кубика по красной
    throw new Exception ("Данные не введены");
      break;
  case  System.Windows.Forms.DialogResult.No:
      return project.Variables["repeat"].Value = "bad"; // В проекти должна быть переменная repeat
      //break;
}

Таймер обратного отсчета :


Код:
var dtStart = DateTime.Now; // текущая дата/время от которо    будет идти отсчет
//var delay = TimeSpan.FromMinutes(2); // задержка в минутах
var delay = TimeSpan.FromSeconds(10); // задержка в секундах
var timerInterval = 1; // интервал таймера в секундах

while(true)
{
    var dtNow = DateTime.Now;

    if(dtNow > dtStart + delay)
    {
        project.SendWarningToLog("Время вышло.");
        break;
    }
    else
    {
        var timeLeft = dtStart + delay - dtNow;
        project.SendInfoToLog(string.Format("Выслать код павторно через: {0} мин. {1} сек.", timeLeft.Minutes, timeLeft.Seconds));
        Thread.Sleep(timerInterval * 1000);
    }
}
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)