Запуск единственного экземпляра приложения

Очень часто бывает нужно запретить запуск более чем одной копии приложения. Сделать это можно разными способами, но в случае с Lazarus самый простой из них — использовать класс UniqueInstance. Причём, совсем не обязательно устанавливать весь пакет и регистрировать компонент на палитре. В большинстве случаев достаточно создать экземпляр этого класса в главном файле проекта и воспользоваться парой его методов:

[code lang=»delphi»]
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.
[/code]

Работающий пример, как обычно, можно скачать из моего файлового архива.

2 комментария

  1. От SnowLeo

    Ответить

  2. От Дмитрий

    Ответить

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *