- Код: Выделить всё
hexdump SI_project1-2774B5DF
0000000 0002 fffc ffff 0000 0000 0000 0000
000000e
Модератор: Модераторы
hexdump SI_project1-2774B5DF
0000000 0002 fffc ffff 0000 0000 0000 0000
000000e
Alexander писал(а):Предложенный код всякий раз при попытке запустить второй экземпляр программы создаёт накапливающиеся в /tmp при каждом запуске лок файлы следующего вида. Зачем ?
xchgeaxeax писал(а):А что там в них записано на 14 байт. Подозреваю, что это параметры командной строки, чтобы можно было открыть много документов в одном окне на разных вкладках.
unit Unit1;
{$mode objfpc}{$h+}
interface
uses
Classes, SysUtils, Forms, Controls, Graphics, Dialogs, StdCtrls, ExtCtrls,
SingleInstance;
type
{ TForm1 }
TForm1 = class(TForm)
procedure FormCreate(Sender: TObject);
private
public
procedure OtherInstanceParams(Sender: TBaseSingleInstance; aList: TStringList);
procedure AppIdleHandler(Sender: TObject; var Done: Boolean);
end;
var
Form1: TForm1;
implementation
{$R *.lfm}
{ TForm1 }
procedure TForm1.FormCreate(Sender: TObject);
begin
Application.OnIdle := @AppIdleHandler;
end;
procedure TForm1.OtherInstanceParams(Sender: TBaseSingleInstance; aList: TStringList);
begin
if WindowState = wsMinimized then
Application.Restore;
Application.BringToFront;
ShowMessage('Попытка запуска другого экземпляра.'+LineEnding+'Параметры запуска:'+LineEnding+aList.Text);
end;
procedure TForm1.AppIdleHandler(Sender: TObject; var Done: Boolean);
begin
Application.SingleInstance.ServerCheckMessages;
Done := True;
end;
end.
program project1;
{$mode objfpc}{$H+}
uses
{$IFDEF UNIX}
cthreads,
{$ENDIF}
{$IFDEF HASAMIGA}
athreads,
{$ENDIF}
AdvancedSingleInstance, //обязательно перед Interfaces, подключает TAdvancedSingleInstance
Interfaces, // this includes the LCL widgetset
Forms, Unit1
{ you can add units after this };
{$R *.res}
begin
RequireDerivedFormResource:=True;
Application.Scaled:=True;
Application.Initialize;
Application.SingleInstanceEnabled := True;
Application.SingleInstance.Start;
if Application.SingleInstance.IsServer then begin
Application.CreateForm(TForm1, Form1);
TAdvancedSingleInstance(Application.SingleInstance).OnServerReceivedParams := @Form1.OtherInstanceParams;
Application.Run;
end else
TAdvancedSingleInstance(Application.SingleInstance).ClientPostParams;
end.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5