Подскажите пожалуйста программу, которая будет запускать терминал, если тот вылетает

 
Иногда, хотя и очень редко, терминал вылетает. Когда это случается, его необходимо запускать автоматически.
Шарил в инете планировщики задач, но ничего стоящего не нашел :(
Написал свою программу, которая выполняет эту задачу, но как-то кривовато вышло.
Должны же быть хорошие готовые решения для такой проблемы?
 

А на чем писал, принцип?

Вообще странно, что терминал вылетает он у меня неделями работал. Если есть желание могу написать, но не бесплатно.

 
Лучшим решением конечно будет вседаки избавится от "вылетания" ИМХО , но если вседаки если нужна именно прога по запуску терминала по условию, то здесь на форуме была ссылка на подобную, лучше искать в контексте обрыва связи, так как помнится именно в этой связи и приводилась ссылка.
 
nnCron чем не подходит?
http://nncron.ru/
Пишите задачу, которая отслеживает наличие окна терминала. При его отсутствии (вылете терминала) nnCron запустит МТ4 опять.
Там где-то примеры в хелпе есть. В крайнем случае спросите на форуме того сайта.
 
solandr писал (а):
nnCron чем не подходит?
http://nncron.ru/
Пишите задачу, которая отслеживает наличие окна терминала. При его отсутствии (вылете терминала) nnCron запустит МТ4 опять.
Там где-то примеры в хелпе есть. В крайнем случае спросите на форуме того сайта.

Пользуюсь nnCron года 3-4, очень хорошая штука, также рекомендую.
 
Действительно, странно, что терминал вылетает. Думаю, нужно искать проблему в запущенных экспертах или индикаторах, если они (индикаторы) не стандартные, а самописные. Лично у меня тоже бывали случаи падения терминала,  но как раз все эти случаи объяснялись фатальными ошибками своих индикаторов или экспертов.
А написать небольшую прогу на ShellApi для отслеживания в списке приложений терминала и запуск его в случае отсутствия - задача довольно простая. Даже не знаю где там можно сделать что-либо коряво...
 
Если не устраивает nncron, возьмите любую среду разработки, которая работает с процессами, и напишите что-то вроде этого:
sTerminal = "C:\Program Files\...";
while (!bMustStop)
{
  Process mt4 = Process.Start(sTerminal, sArguments);
  while (!mt4.HasExited)
  {
    System.Threading.Thread.Sleep(1000);
  }
}
Код примерный. Возможно, опрос свойства HasExited лучше повесить на таймер.
 
А какой билд используете дату скажите? Скачайте последнюю версию терминала - думаю может помочь если конечно ошибка не в вашей стратегии или терминале.
 
Проблема в том, что торгует не один терминал, а несколько, причем работают синхронно через dll и разделяемую память. Где-то в системе ошибка, сложно определить где, кода больше 1000 строк. Поэтому решил пойти по пути наименьшего сопротивления.

А на чем писал, принцип?

Писал на C++BUilder, принцип - експерт пишет данные в файл, и если количество записей не увеличилось, то приложение запускает этот процесс. Проблемы видимо из-за совместного доступа к памяти.

nnCron чем не подходит?
http://nncron.ru/

Спасибо, посмотрю.
 
Самый обычный способ для таких целей - программа, устанавливающая любую программу как NT-сервис. Например самая популярная платная FireDaemon Pro Service Manager (http://www.firedaemon.com)
При закрытии программы ее тут же запустят снова. К тому же она будет запущена сразу после загрузки винды и до логина, так что после потери питания все запустится без вмешательства.
Причина обращения: