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

Очень часто бывает нужно запретить запуск более чем одной копии приложения. Сделать это можно разными способами, но в случае с 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.

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

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

  1. От SnowLeo

    Ответить

  2. От Дмитрий

    Ответить

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

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