Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Запретить запуск второго экземпляра программы 2

Delphi , Программа и Интерфейс , Приложение своё

Запретить запуск второго экземпляра программы 2

- Чем отличается программист от политика?
- Программисту платят деньги за работающие программы.


var
  AtomText: array [0..31] of Char;

procedure LookForPreviousInstance;
var
  PreviousInstanceWindow : hWnd;
  AppName : array[0..30] of char;
  FoundAtom : TAtom;
begin
  // помещаем имя приложения в AtomText
  StrFmt(AtomText, 'OnlyOne%s', [Copy(Application.Title,1,20)]);
  // Проверяем, не создано ли уже атома с таким именем приложения
  FoundAtom := GlobalFindAtom(AtomText);
  if FoundAtom <> 0 then { эта копия приложения уже запущена }
  begin
    StrFmt(AppName,'%s', [Application.Title]);
    // изменяем текущий заголовок, чтобы FindWindow не видела его
    Application.ShowMainForm := false;
    Application.Title := 'destroy me';
    // ищем предыдущую копию приложения
    PreviousInstanceWindow := FindWindow(nil,AppName);
    // Передаём фокус на предыдущую копию приложения
    // завершаем текущую копию
    Application.Terminate;

    if PreviousInstanceWindow <> 0 then
      if IsIconic(PreviousInstanceWindow) then
        ShowWindow(PreviousInstanceWindow,SW_RESTORE)
      else
        SetForegroundWindow(PreviousInstanceWindow);
  end;
  // создаём глобальный атом, чтобы предотвратить
  // запуск другой копии приложения
  FoundAtom := GlobalAddAtom(AtomText);
end;

constructor TForm.Create(AOwner: TComponent);
begin
  inherited;
  LookForPreviousInstance;
end;

destructor TForm.Destroy;
var
  FoundAtom : TAtom;
  ValueReturned : word;
begin
  // не забудьте удалить глобальный атом
  FoundAtom := GlobalFindAtom(AtomText);
  if FoundAtom <> 0 then
    ValueReturned := GlobalDeleteAtom(FoundAtom);
  inherited Destroy;
end;

Программа на Delphi, предназначенная для предотвращения запуска нескольких экземпляров одного приложения одновременно. Вот разбивка кода:

Процедура LookForPreviousInstance 1. Она проверяет, существует ли атом (уникальный идентификатор) для текущего экземпляра приложения в системе. 2. Если он есть, это означает, что другой экземпляр уже запущен, поэтому: * Она изменяет заголовок текущего экземпляра на 'destroy me' для предотвращения поиска FindWindow. * Она заканчивает работу текущего экземпляра с помощью Application.Terminate. * Она устанавливает фокус на предыдущий экземпляр, найдя его handle окна и восстановив или принеся его в передний план, если необходимо. 3. Если атом не найден, она создает новый глобальный атом для текущего экземпляра.

Конструктор формирования 1. Он вызывает конструктор наследника для инициализации формы. 2. Он вызывает LookForPreviousInstance для проверки запущено ли уже другое приложение и предотвращения запуска нескольких экземпляров одновременно.

Деструктор формирования 1. Он проверяет, существует ли атом для текущего экземпляра в системе. 2. Если он есть, она удаляет атом с помощью GlobalDeleteAtom. 3. Она вызывает деструктор наследника для финализации уничтожения формы.

Основное отличие между программистом и политиком заключается в том, что программист пишет код для решения проблем и создания функционирующих программ, а политик пишет законы и принимает решения для формирования общества.

В отношении оплаты, программисты обычно получают за создание работающих программ, а политики могут получать компенсацию за свои услуги в различных формах (например, зарплата, льготы или пожертвования на кампанию).

В целом, это программа обеспечивает, что только один экземпляр приложения может запускаться одновременно, предотвращая запуск нескольких экземпляров одновременно.

В статье рассматривается реализация механизма запрета запуска второго экземпляра программы на примере приложения с использованием Delphi и технологии атомов (atoms).


Комментарии и вопросы

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.


:: Главная :: Приложение своё ::


реклама


©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru

Время компиляции файла: 2024-08-19 13:29:56
2024-11-21 11:40:05/0.0056419372558594/1