lasarus_compotents/UniqueInstance/uniqueinstancebase.pas

64 lines
1.1 KiB
ObjectPascal

unit UniqueInstanceBase;
{$mode objfpc}{$H+}
interface
uses
Classes, SysUtils, simpleipc;
const
ParamsSeparator = #13;
var
FIPCServer: TSimpleIPCServer;
procedure InitializeUniqueServer(const ServerId: String);
function GetFormattedParams: String;
function GetServerId(const Identifier: String): String;
implementation
uses
LazUTF8;
const
BaseServerId = 'tuniqueinstance_';
procedure InitializeUniqueServer(const ServerId: String);
begin
//It's the first instance. Init the server
if FIPCServer = nil then
begin
FIPCServer := TSimpleIPCServer.Create(nil);
FIPCServer.ServerID := ServerId;
FIPCServer.Global := True;
FIPCServer.StartServer;
end;
end;
function GetFormattedParams: String;
var
i: Integer;
begin
Result := '';
for i := 1 to ParamCount do
Result := Result + ParamStrUTF8(i) + ParamsSeparator;
end;
function GetServerId(const Identifier: String): String;
begin
if Identifier <> '' then
Result := BaseServerId + Identifier
else
Result := BaseServerId + ExtractFileName(ParamStrUTF8(0));
end;
finalization
FIPCServer.Free;
end.