IPB
ЛогинПароль:

> ВНИМАНИЕ!

Прежде чем задать вопрос, смотрите FAQ.
Рекомендуем загрузить DRKB.

> Отслеживание двойного запуска
Unconnected
сообщение 25.06.2011 4:12
Сообщение #1


mea culpa
*****

Группа: Пользователи
Сообщений: 1 372
Пол: Мужской
Реальное имя: Николай

Репутация: -  24  +


Нужно встроить в программу проверку, не запущена ли уже эта её копия. В гугле это есть, но.. осложняется тем, что теоретический дабл-запуск будет как бы фор-кликом, то есть мгновенно после первого запуска. И видимой формы тоже нет..


--------------------
"Знаешь, стыдно - когда не видно, что услышал всё, что слушал.."
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 
 
 Ответить  Открыть новую тему 
Ответов
IUnknown
сообщение 25.06.2011 23:37
Сообщение #2


a.k.a. volvo877
*****

Группа: Пользователи
Сообщений: 1 013
Пол: Мужской

Репутация: -  627  +


Цитата
Мессадж что-то не вылетает.


program Project1;

{$APPTYPE CONSOLE}

uses
Windows, SysUtils;

const
srMutexName = 'VOLVO_APP_VERY_LONG_ID_STRING'; // Тут на самом деле была еще пара десятков цифр

var
f_m: THandle; // mutex
begin
f_m := CreateMutex(nil, true, srMutexName);
if ( (ERROR_ALREADY_EXISTS = GetLastError()) or (ERROR_ACCESS_DENIED = GetLastError()) ) then begin
if (0 <> f_m) then CloseHandle(f_m);
MessageBox(0, 'Another instance is already running', 'Error', MB_OK);
end
else try
MessageBox(0, 'test', 'test', MB_OK);
//Application.Initialize;
// ...
//Application.Run;
finally
CloseHandle(f_m);
end;
end.

Вылетает сообщение о том, что приложение уже запущено, при Quad-клике... А вот насчет необходимости ERROR_ACCESS_DENIED я бы поспорил... Если у тебя нет доступа к мьютексу - значит, у тебя и на его установку нет доступа, ты можешь и при запуске первой копии нарваться на сообщение, что "уже запущено"...
 Оффлайн  Профиль  PM 
 К началу страницы 
+ Ответить 

Сообщений в этой теме


 Ответить  Открыть новую тему 
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 



- Текстовая версия 31.07.2025 1:46
Хостинг предоставлен компанией "Веб Сервис Центр" при поддержке компании "ДокЛаб"