Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.08.27;
Скачать: CL | DM;

Вниз

Запустил раз — включилось, запустил второй — выключилось   Найти похожие ветки 

 
Тыщ ©   (2009-02-28 23:12) [0]

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

Сделал event"ами, насколько хорош такой способ?

uses Windows;

var
  Ev: THandle;
begin
  Ev := CreateEvent(nil, true, false, "unique123");
  if GetLastError() = ERROR_ALREADY_EXISTS then
  begin
    SetEvent(Ev);
    Exit;
  end;
  MessageBox(0, "Started.", "", 0);
  repeat
    //DoSomeTask();
    if WaitForSingleObject(Ev, 50) = 0 then break;
  until false;
  MessageBox(0, "Stopped.", "", 0);
  CloseHandle(Ev);
end.


 
Германн ©   (2009-03-01 00:27) [1]


> Тыщ ©   (28.02.09 23:12)
>
> Есть программа, не создающая никаких окон и работающая в
> фоновом режиме.
> Нужно сделать так, чтоб при повторном запуске она только
> завершала свой предыдущий процесс.
>

А что есть "фоновый режим"?
А чем данная задача отличается от стандартной задачи "контроля запуска второй копии приложения"?


 
Медвежонок Пятачок ©   (2009-03-01 00:44) [2]

батник, в котором 2 строки

taskkill
myproga.exe


 
Тыщ ©   (2009-03-01 22:41) [3]

Жду нормальных ответов.


 
Медвежонок Пятачок ©   (2009-03-02 00:01) [4]

программирование ради программирования


 
Медвежонок Пятачок ©   (2009-03-02 00:07) [5]

Нужно сделать так, чтоб при повторном запуске она только завершала свой предыдущий процесс.

Сделал event"ами, насколько хорош такой способ?


Он хорош всем кроме того, что не делает то, что надо.
А именно не завершает предыдущий процесс, а ничего не делает пока тот сам не завершится.


 
Тыщ ©   (2009-03-02 01:37) [6]

> А именно не завершает предыдущий процесс, а ничего не делает пока тот сам не завершится.

Скомпилируй, посмотри, удивись.


 
Германн ©   (2009-03-02 02:42) [7]


> Тыщ ©   (01.03.09 22:41) [3]
>
> Жду нормальных ответов.
>

Жду нормальных вопросов.


 
KSergey ©   (2009-03-02 08:30) [8]

> Тыщ ©   (02.03.09 01:37) [6]
> Скомпилируй, посмотри, удивись.

и где здесь "она только завершала свой предыдущий процесс"?


 
Медвежонок Пятачок ©   (2009-03-02 09:05) [9]

и где здесь "она только завершала свой предыдущий процесс"?

"Это ему снится"


 
Anatoly Podgoretsky ©   (2009-03-02 09:59) [10]

Да ладно, все нормально, не каждому дано понять.


 
KSergey ©   (2009-03-02 10:46) [11]

> Anatoly Podgoretsky ©   (02.03.09 09:59) [10]
> Да ладно, все нормально, не каждому дано понять.

однако да, любезно дает возможность узнать о желании завершить :)


 
Anatoly Podgoretsky ©   (2009-03-02 11:06) [12]

Ну не только дает, но и делает, а MessageBox наверно для отладки.


 
Григорьев Антон ©   (2009-03-02 11:21) [13]

Если у вас открыты сессии одновременно нескольких пользователей, то повторный запуск программы не приведёт к выгрузке первой копии, если запуск выполняется из разных сессий. Возможно, именно так вы всё и задумывали. Но если вам нужно, чтобы запуск программы из-под другой сессии прекращал работу программы в первой сессии, имя события должно начинаться с "Global\".


 
Тыщ ©   (2009-03-02 15:55) [14]

> Григорьев Антон ©   (02.03.09 11:21) [13]

Спасибо! Учту.



Страницы: 1 вся ветка

Текущий архив: 2010.08.27;
Скачать: CL | DM;

Наверх




Память: 0.5 MB
Время: 0.066 c
11-1218148886
cjfan
2008-08-08 02:41
2010.08.27
ошибка компиляции любого демо-проекта


15-1267433491
Prizrak
2010-03-01 11:51
2010.08.27
Delphi утилита для извлечения функций из любой dll


15-1264459453
Германн
2010-01-26 01:44
2010.08.27
"Скорость движения указателя"


2-1270799708
berbegon
2010-04-09 11:55
2010.08.27
запись звука в Delphi


2-1266325693
Rail
2010-02-16 16:08
2010.08.27
как правильно указать путь к бд