Utiliser les messages windows pour gerer le nombre d'instances

Description

Un morceau de code qui permet de gerer le nombre d'instances de vos applications,
l'idée est d'envoyer un message informant l'application en cours d'execution,cette derniere traite la demande et elle peut l'accepter comme elle ne l'accepte pas....
c'est un peu bete mais sa sera bon,

Source / Exemple :


unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, ExtCtrls;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Panel1: TPanel;
    procedure FormCreate(Sender: TObject);
  private
    { Déclarations privées }
    procedure DefaultHandler(var Msg);override;
  public
    { Déclarations publiques }
  end;

var
  Form1: TForm1;
  MessageSys:UINT;

implementation

{$R *.dfm}

procedure TForm1.DefaultHandler(var Msg);
begin
  inherited DefaultHandler(Msg);
  if TMessage(Msg).Msg=MessageSys then
    case TMessage(Msg).WParam of
      0:if TMessage(Msg).LParam<>Application.Handle Then
          //if MessageDlg('New Instance is about to start,Start it?',mtConfirmation,[mbYes,mbNo],0)=mrNo then
            begin
              SendMessage(HWND_BROADCAST,MessageSys,1,application.Handle);
            end;
      1:if TMessage(Msg).LParam<>Application.handle then
          begin
            application.Terminate;
          end;
    end;
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
  MessageSys:=RegisterWindowMessage('MsgOneInst12');
  SendMessage(HWND_BROADCAST,MessageSys,0,Application.Handle);
end;

end.

Conclusion :


j'accepte vos commentaires et vos corrections

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.