13 января 2011
Запуск единственного экземпляра приложения
Очень часто бывает нужно запретить запуск более чем одной копии приложения. Сделать это можно разными способами, но в случае с Lazarus самый простой из них — использовать класс UniqueInstance. Причём, совсем не обязательно устанавливать весь пакет и регистрировать компонент на палитре. В большинстве случаев достаточно создать экземпляр этого класса в главном файле проекта и воспользоваться парой его методов:
program project1; uses Interfaces, Forms, Unit1, unique_utils; var MyProg: TUniqueInstance; begin // Создаём объект с уникальным идентификатором MyProg:=TUniqueInstance.Create('Lazarus.Su'); // Проверяем, нет ли в системе объектов с таким ID if MyProg.IsRunInstance then begin // Если уже есть - завершаем работу приложения // (предварительно можно отправить ранее запущенному // экземпляру нашего приложения какую-нибудь строку, // например, парметр командной строки: MyProg.SendString(ParamStr(1)); MyProg.Free; Halt(1); end else // Если нет - регистрируем в системе наш идентификатор MyProg.RunListen; // Дальше можно работать как обычно Application.Initialize; Application.CreateForm(TForm1, Form1); Application.Run; end.
Работающий пример, как обычно, можно скачать из моего файлового архива.
Интересно, а есть ли подобный класс в Delphi?
Спасибо! Работает!