Empecher execution multiple application

sablor Messages postés 58 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 1 octobre 2004 - 15 mai 2003 à 12:40
sablor Messages postés 58 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 1 octobre 2004 - 19 mai 2003 à 11:06
Sablor

Bonjour à tous

Je voudrais empecher que mon application puisse s'executer plusiseurs fois. Si je la lance une fois qu'elle ne puisse plus se lancer.

Donc j'ai fais ainsi

if FindWindow('TMyForm','MyForm') <> 0 then
ShowMessage('Erreur Appli deja en cours d''execution');
exit;
end;

mais ca ne fonctionne pas

comment dois je proceder

Merci

Sablor

2 réponses

cs_Delphiprog Messages postés 4297 Date d'inscription samedi 19 janvier 2002 Statut Membre Dernière intervention 9 janvier 2013 32
17 mai 2003 à 08:24
Voici un code qui fonctionne et qui doit figurer dans le source du projet :
program Project1;

uses
Forms, Windows, Sysutils, Messages,
unit1 in 'unit1.pas' {Form1};

Var
ClassName : Array[0..255] of char;
result : integer;
{$R *.RES}

begin
Application.Initialize;
Application.Title := 'Start';
GetClassName(Application.handle, ClassName, 254);
{ renvoie le Handle de la première fenêtre de Class (type) ClassName et de titre Application.Title (0 s'il n'y en a pas)} 
result := FindWindow(ClassName, 'Onlyone'); 
if result <> 0 then // Une instance existante trouvée
begin
ShowWindow(result, SW_RESTORE);
SetForegroundWindow(result);
Application.Terminate;
end
else // Première création
begin
Application.Title := 'Onlyone';
Application.CreateForm(TForm1, Form1);
Application.Run;
end;
end.

Non seulement il évite de créer de multiples instances d'un même programme mais, en plus, il remet au premier plan l'instance précédente en cours d'exécution.
May Delphi be with you
0
sablor Messages postés 58 Date d'inscription jeudi 19 décembre 2002 Statut Membre Dernière intervention 1 octobre 2004
19 mai 2003 à 11:06
Merci encore pour ton aide...
A+
Sablor
0
Rejoignez-nous