1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48
| program Project1;
uses
Windows, Forms, //ici on ajoute Windows...
Unit1 in 'Unit1.pas' {Form1},
Unit2 in 'Unit2.pas' {Form2},
Unit3 in 'Unit3.pas' {Form3},
Unit4 in 'Unit4.pas',
Unit5 in 'Unit5.pas' {Form5};
//Variables nécessaires
var
WM_ENVOI_ATOM, i:Integer;
h:THandle;
atom_Envoi:Atom;
param_instance:String;
{$R *.res}
begin
//Création du mutex
SetLastError(NO_ERROR);
CreateMutex (nil, False, 'Mon application');
h := FindWindow(nil, 'Mon application');
if GetLastError = ERROR_ALREADY_EXISTS then //si une instance existe déjà, on exécute cette condition
begin
WM_ENVOI_ATOM := RegisterWindowMessage('WM_ENVOI_ATOM');
if ParamCount > 0 then
begin
param_instance := '';
for i:=1 to ParamCount do
begin
param_instance := param_instance+' '+ParamStr(i); //je place tout les paramètres dans une variable
end;
atom_Envoi := GlobalAddAtom(PChar(param_instance));
SendMessage(h, WM_ENVOI_ATOM, atom_Envoi, 0); //On envoie le tout à la première instance
end;
Exit; //on quitte la deuxième instance
end;
Application.Initialize;
Application.Title := 'Mon application';
Application.CreateForm(TForm1, Form1);
Application.CreateForm(TForm2, Form2);
Application.CreateForm(TForm3, Form3);
Application.CreateForm(TForm5, Form5);
Application.Run;
end. |
Partager