Главная страница
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.054 c
4-1237182519
Cypher
2009-03-16 08:48
2010.08.27
Управление чужим окном


15-1267521403
sniknik
2010-03-02 12:16
2010.08.27
Символ + и TIdURI.URLEncode, как правильно?


15-1263677426
Юрий
2010-01-17 00:30
2010.08.27
С днем рождения ! 17 января 2010 воскресенье


15-1268650699
Омлет
2010-03-15 13:58
2010.08.27
Проверка на выпуклость четырехугольника


2-1267688655
evg
2010-03-04 10:44
2010.08.27
Какой компонент использовать для отображения сектора