Текущий архив: 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.47 MB
Время: 0.073 c