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 49 50 51 52 53 54 55 56 57
|
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs;
type
TForm1 = class(TForm)
private
{ Déclarations privées }
public
{ Déclarations publiques }
end;
procedure AfficherInstance(InstHandle: HWND);
function IsPrevInstance: HWND;
var
Form1: TForm1;
implementation
{$R *.dfm}
function IsPrevInstance: HWND;
var
ClassName: array[0..255] of char;
Title: string;
begin
Title := Application.Title;
Application.Title := '';
{ On change le titre, car on trouverait toujours une application lancée, (la notre). }
try
GetClassName(Application.Handle, ClassName, 255);
{ Met dans ClassName le nom de la classe de l'application. }
Result := FindWindow(ClassName, PChar(Title));
{ Renvoie le Handle de la 1ère fenêtre de Class (Type) ClassName, et le titre de l'application. }
finally
Application.Title := Title; { Restauration du vrai titre. }
end;
end;
procedure AfficherInstance(InstHandle: HWND);
begin
{ Restaurer l'application si minimisée }
ShowWindow(InstHandle, SW_RESTORE);
{ Mettre la première instance en premier plan : }
SetForegroundWindow(InstHandle);
{ Fin de la deuxième instance }
Application.Terminate;
end;
end. |
Partager