Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.04.2010, 12:21   #1
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,899
По умолчанию Перезапуск приложения после падения

Есть приложение консольного типа, оно имеет окно и кнопку на панели задач. Это приложение иногда закрывается после ошибки ничего не выводя. Нужно делать проверку каждые 30 мин на наличие работы данного приложения и если оно упало то запустить и оповестить об это. Как такое сделать?
Shouldercannon вне форума Ответить с цитированием
Старый 11.04.2010, 12:50   #2
Arigato
Высокая репутация
СуперМодератор
 
Аватар для Arigato
 
Регистрация: 27.07.2008
Сообщений: 15,865
По умолчанию

Из списка процессов можно проверять, запущен ли нужный ехешник или нет.
Arigato вне форума Ответить с цитированием
Старый 11.04.2010, 15:30   #3
Shouldercannon
Участник клуба Подтвердите свой е-майл
 
Аватар для Shouldercannon
 
Регистрация: 26.01.2008
Сообщений: 1,899
По умолчанию

Как вариант хорошь. Только как сделать сие?
Shouldercannon вне форума Ответить с цитированием
Старый 11.04.2010, 15:43   #4
raxp
Старожил
 
Регистрация: 29.09.2009
Сообщений: 9,713
По умолчанию

...получаешь список процессов из второго приложения-процесса и сравниваешь с заданным именем, при отсутствии - запускаешь, имхо действия вирусняка
Разработки и научно-технические публикации :: Видеоблог :: Твиттер
Radar systems engineer & Software developer of industrial automation
raxp вне форума Ответить с цитированием
Старый 11.04.2010, 17:42   #5
xakkkkker
Форумчанин
 
Аватар для xakkkkker
 
Регистрация: 15.12.2007
Сообщений: 226
По умолчанию

Вот функция которая определяет запущен ли процесс. В качестве параметра передаешь ей имя процесса.

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, tlhelp32;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Edit1: TEdit;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}


function IsRunning( sName : string ) : boolean;
var
han : THandle;
ProcStruct : PROCESSENTRY32; // from "tlhelp32" in uses clause
sID : string;
begin
Result := false;
// Get a snapshot of the system 
han := CreateToolhelp32Snapshot( TH32CS_SNAPALL, 0 );
if han = 0 then
   exit;
// Loop thru the processes until we find it or hit the end
ProcStruct.dwSize := sizeof( PROCESSENTRY32 );
if Process32First( han, ProcStruct ) then
   begin
     repeat
       sID := ExtractFileName( ProcStruct.szExeFile );
      // Check only against the portion of the name supplied, ignoring case
      if uppercase( copy( sId, 1, length( sName ) ) ) = uppercase( sName ) then
         begin
          // Report we found it
           Result := true;
           Break;
         end;
     until not Process32Next( han, ProcStruct );
   end;
// clean-up
CloseHandle( han );
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
  if IsRunning (Edit1.Text) then ShowMessage('ES');
end;

end.
В таймере каждые 30 минут проверяешь запущен твой процесс, если нет то запускаешь его. (Наверно как запустить программу сам напишешь).
И не забудь подключить uses tlhelp32
xakkkkker вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Закрытие приложения после воспроизведения boostman Мультимедиа в Delphi 2 29.11.2009 13:13
После закрытия приложения выскакивает экран CPU. Alex Cones Общие вопросы Delphi 13 01.08.2009 21:41
Перезапуск DOS приложения по условию andrewua12 Фриланс 1 26.05.2009 00:02
Перезапуск DOS приложения по условию andrewua12 Операционные системы общие вопросы 2 25.05.2009 17:11
Можно ли после аварийного закрытия приложения внести/удалить запись из файла Ramires Общие вопросы Delphi 9 06.08.2008 10:38