- "Hе" с глаголами пишется вместе или отдельно?
- Через пробел!
У меня есть элементарный вариант, проще не бывает. Предлагаемый мной модуль
только определяет запущена программа или нет. Я не стал усложнять этот модуль
автоматическим изменением имени семафора на случай если две программы захотят
использовать этот модуль одновременно. Имея самые скромные навыки в
программировании можно придумать семафору своё уникальное имя и переписать его в
previnst.pas вовсе не обязательно семафор называть AbraShvabra.
Использование: В модуле program в части Uses нужно добавить previnst и вы
получаете переменную ммм: boolean которая true если копия программы уже
запущена.
Пример:
program Project1;
uses
previnst, windows, Forms,
Unit1 in 'Unit1.pas' {Form1};
{$R *.RES}beginif mmm thenbegin
ShowWindow(FindWindow('tform1', 'Имя окна которое активизировать'),
SW_restore);
SetForegroundWindow(FindWindow('tform1', 'Имя окна которое
активизировать'));
halt; //завершить программу не создавая ничего.end;
//Тело программы прогры
Application.Initialize;
Application.CreateForm(TForm1, Form1);
Application.Run;
end.
содержание модуля previnst.pas
unit Previnst;
interfaceuses Windows;
var
mmm: boolean; //эта переменная если true то программа уже запущенаimplementationvar
hMutex: integer;
begin
mmm := false;
hMutex := CreateMutex(nil, TRUE, 'AbraShvabra'); // Создаем семафорif GetLastError <> 0 then
mmm := true; // Ошибка семафор уже создан
ReleaseMutex(hMutex);
end.
В статье описывается способ предотвращения запуска второй копии программы на языке Паскаль, с помощью использования семафора для блокировки доступа к программе.
Комментарии и вопросы
Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS