![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Запустил раз — включилось, запустил второй — выключилось
Тыщ © (2009-02-28 23:12:00)Есть программа, не создающая никаких окон и работающая в фоновом режиме.
Нужно сделать так, чтоб при повторном запуске она только завершала свой предыдущий процесс.
Сделал 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-02 15:55:00) [1]> Григорьев Антон © (02.03.09 11:21) [13]
Спасибо! Учту.
Григорьев Антон (2009-03-02 11:21:00) [2]Если у вас открыты сессии одновременно нескольких пользователей, то повторный запуск программы не приведёт к выгрузке первой копии, если запуск выполняется из разных сессий. Возможно, именно так вы всё и задумывали. Но если вам нужно, чтобы запуск программы из-под другой сессии прекращал работу программы в первой сессии, имя события должно начинаться с "Global\".
Anatoly Podgoretsky (2009-03-02 11:06:00) [3]Ну не только дает, но и делает, а MessageBox наверно для отладки.
KSergey (2009-03-02 10:46:00) [4]> Anatoly Podgoretsky © (02.03.09 09:59) [10]
> Да ладно, все нормально, не каждому дано понять.
однако да, любезно дает возможность узнать о желании завершить :)
Anatoly Podgoretsky (2009-03-02 09:59:00) [5]Да ладно, все нормально, не каждому дано понять.
Медвежонок Пятачок (2009-03-02 09:05:00) [6]и где здесь "она только завершала свой предыдущий процесс"?
"Это ему снится"
KSergey (2009-03-02 08:30:00) [7]> Тыщ © (02.03.09 01:37) [6]
> Скомпилируй, посмотри, удивись.
и где здесь "она только завершала свой предыдущий процесс"?
Германн (2009-03-02 02:42:00) [8]
> Тыщ © (01.03.09 22:41) [3]
>
> Жду нормальных ответов.
>
Жду нормальных вопросов.
Тыщ (2009-03-02 01:37:00) [9]> А именно не завершает предыдущий процесс, а ничего не делает пока тот сам не завершится.
Скомпилируй, посмотри, удивись.
Медвежонок Пятачок (2009-03-02 00:07:00) [10]Нужно сделать так, чтоб при повторном запуске она только завершала свой предыдущий процесс.
Сделал event'ами, насколько хорош такой способ?
Он хорош всем кроме того, что не делает то, что надо.
А именно не завершает предыдущий процесс, а ничего не делает пока тот сам не завершится.
Медвежонок Пятачок (2009-03-02 00:01:00) [11]программирование ради программирования
Тыщ (2009-03-01 22:41:00) [12]Жду нормальных ответов.
Медвежонок Пятачок (2009-03-01 00:44:00) [13]батник, в котором 2 строки
taskkill
myproga.exe
Германн (2009-03-01 00:27:00) [14]
> Тыщ © (28.02.09 23:12)
>
> Есть программа, не создающая никаких окон и работающая в
> фоновом режиме.
> Нужно сделать так, чтоб при повторном запуске она только
> завершала свой предыдущий процесс.
>
А что есть "фоновый режим"?
А чем данная задача отличается от стандартной задачи "контроля запуска второй копии приложения"?