Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C++ Builder > Работа с временем


Автор: Папараццы 6.2.2008, 10:43
Нужно чтобы программа каждое утро в 8 часов перезапускала сервис WinExec("net stop Service",1);  Где сервис это программа которую надо перезапустить. 
Это код который извлекает время. Собственно мне не нужна форма или какиео кнопки. Вообше желательно чтобы программа была скрытой (консольной) и жрала как можно меньше ресурсов. 
Код

 TTime x;
 x = Now();
 Label1->Caption=x;

 Как мне отслеживать время, чтобы в 8 часов утра программа вызывала функцию WinExec ? Есть вариант через TTimer чтобы он проверял каждый час, если да то  перезапускал. Новерника есть метод получше. Заранее благодарен. 

Автор: Comm 6.2.2008, 11:13
Зачем каждый час, можно запросить информацию о времени...и расчетать на сколько установить таймер...
в FormCreat считываем системное время.

 допустим сейчас 8 часов утра
Следовательно устанавливаем счётчик OnTimer на 12 часов.
В обработчике  OnTimer  после функции перезапуска службы сново делаем расчёт))


Автор: Папараццы 6.2.2008, 11:32
Тоесть надо в 8 часов запустить это приложение потом ждать 12 часов ? незнаю эт как то странно. А есть другие варианты. Так скажем более гибкие ? 

Автор: Comm 6.2.2008, 11:49
Ну не знаю))) Юзай тогда виндосовскую службу "Мастер планирования заданий"
и поставь на 20-00 запуск своего приложения..которое в свою очередь обратится к системному времени и перезапустит службу)))или напрямую перезапуск службы без своего приложения.

Автор: Папараццы 6.2.2008, 12:57
Не эт не пойдет. 

Автор: Папараццы 6.2.2008, 13:43
А что если 
Код

ShowMessage("Service started");
while(1)  { 
  WinExec("net stop myservice",1);
 Sleep(5000);
  WinExec("net start myservice",1);
 Sleep(1000000000000000000); //Tut nado vpisatj 12 casavoj interval 
}

  Будет ли он контралировать ? Или слишком дуратский код ? 

Автор: Comm 6.2.2008, 13:54
Если процесс месаэйдж не поставишь..то программа повиснет)))
Мда))) Дуратский код)))

Автор: Папараццы 6.2.2008, 14:36
А как этот месейдж поставить ?  smile 

Автор: Nat 6.2.2008, 15:44
Application->ProcessMessages;

Автор: Папараццы 7.2.2008, 00:01
и это просто вписать в цикл ? 

Автор: Папараццы 8.2.2008, 13:05

Код

 if (Now()==StrToTime("12:34:00")) { ShowMessage("Xixixixi");} 

Почему не работает ? 

Автор: ppcumax 8.2.2008, 15:27
Код

if (TimeToStr(Now())=="12:34:00") { ShowMessage("Xixixixi");} 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)