PDA

Просмотр полной версии : Что я делаю нетак?


th13fnano
08.12.2008, 19:48
Хочу организовать метод doublerun на делфи. Суть такова - один процесс следит запущен ли другой а другой следит за первым. Если один из них умерает другой запускает его опять. Уже делал раз такое - работало наура. Сорцы потеряны. Вот собственно код, непойму почему неработает.


{$APPTYPE CONSOLE}
program test;

uses
SysUtils, Windows, Shellapi;
const
mutex1 :string = 'ABDCDBEFBDEBFAB';
mutex2 :string = 'EFDACBDFEABDCDF';
Begin
if (OpenMutex(MUTEX_ALL_ACCESS, false, Pchar(mutex1)) = 0) then
Begin
CreateMutex(nil, false, Pchar(mutex1));
Writeln(mutex1);
End else Begin
if (OpenMutex(MUTEX_ALL_ACCESS, false, Pchar(mutex2)) = 0) then Begin
CreateMutex(nil, false, Pchar(mutex2));
Writeln(mutex2);
End
End;
while true do begin
sleep(1000);
writeln(OpenMutex(MUTEX_ALL_ACCESS, false, Pchar(mutex1)));
writeln(OpenMutex(MUTEX_ALL_ACCESS, false, Pchar(mutex2)));
if (OpenMutex(MUTEX_ALL_ACCESS, false, Pchar(mutex1)) > 0) and
(OpenMutex(MUTEX_ALL_ACCESS, false, Pchar(mutex2)) > 0) Then
Begin
end else Begin
Shellapi.ShellExecute(0,'open',pchar(Paramstr(0)), '','',1);
sleep(10);
End;
end;
End.

th13fnano
08.12.2008, 19:50
Кто поможет написать?