IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Nono40.developpez.com
Le petit coin du web de Nono40
SOURCES TESTS DELPHI WIN32 AUTOMATISMES DELPHI .NET QUICK-REPORT
Retour à l'accueil
73 - DIALOGUE PAR MESSAGES ENTRE APPLICATIONS

PRÉSENTATION : Dialogue par message personnalisé.
ZIP : Téléchargez le zip APERÇUS :

NOTES : Simple exemple de la mise en place d'un échange par message afin d'envoyer une demande vers une application et d'en attendre la réponse.

CODE :
//
// Sujet : Dialogue entre applications par messages
//         Application emmetrice
//
// Par Nono40 : http://nono40.developpez.com   http://nono40.fr.st
//              mailTo:nono40@fr.st
//
// Le 13/01/2004
//

Unit Unit1;

Interface

Uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Spin;

Const
  // Définition d'un type de message personnalisé
  WM_MON_MESSAGE = WM_USER+1;

Type
  TForm1 = Class(TForm)
    Button1: TButton;
    se1: TSpinEdit;
    se2: TSpinEdit;
    Label1: TLabel;
    seTotal: TSpinEdit;
    Procedure Button1Click(Sender: TObject);
  Private
    { Déclarations privées }
  Public
    { Déclarations publiques }
  End;

Var
  Form1: TForm1;

Implementation

{$R *.dfm}

Procedure TForm1.Button1Click(Sender: TObject);
Var H:THandle;
Begin
  // Recherche du Handle de la fenêtre de l'application
  // réceptrice. Le nom de la classe doit correspondre
  // à une fenêtre unique pour que cette recherche ( simple )
  // fonctionne.
  H:=FindWindow('TFormSomme',Nil);
  If H<>0 Then
    // Envoi du message avec les deux valeurs à aditionner.
    // SendMessage attend la réponse de l'application réceptrice.
    seTotal.Value:=SendMessage(H,WM_MON_MESSAGE,se1.Value,se2.Value)
  Else
    ShowMessage('Fenêtre non trouvée...');
End;

end.

//
// Sujet : Dialogue entre applications par messages
//         Application réceptrice
//
// Par Nono40 : http://nono40.developpez.com   http://nono40.fr.st
//              mailTo:nono40@fr.st
//
// Le 13/01/2004
//

Unit Unit2;

Interface

Uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, AppEvnts, Spin;

Const
  // Définition d'un type de message personnalisé
  WM_MON_MESSAGE=WM_USER+1;

Type
  // Il est important que la classe de fiche utilisée soit unique, afin
  // que le Handle de fenêtre de l'instance soit facile à trouver. Un simple
  // TForm1 risquerait de ne pas retourner la bonne fenêtre.
  // Cette méthode est simpliste, mais ce n'est pas le sujet.
  TFormSomme = Class(TForm)
    Label1: TLabel;
    se1: TSpinEdit;
    se2: TSpinEdit;
    Label2: TLabel;
    seTotal: TSpinEdit;
    // Définition d'une méthode de message, afin de d'intercepter
    // les messages reçus.
    Procedure WMMonMessage(Var Mes: TMessage); message WM_MON_MESSAGE;
  Private
    { Déclarations privées }
  Public
    { Déclarations publiques }
  End;

Var
  FormSomme: TFormSomme;

Implementation

{$R *.dfm}

Procedure TFormSomme.WMMonMessage(Var Mes: TMessage);
Begin
  // Les deux valeurs sont contenues dans les données du message
  se1.Value := Mes.wParam;
  se2.Value := Mes.lParam;
  seTotal.Value := se1.Value + se2.Value;
  // La somme est mise dans le résultat. Le mécanisme de gestion des
  // messages se chargera de transmettre le résultat à l'appelant.
  Mes.Result := seTotal.Value;
End;

end.

Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2003 Bruno Guérangé. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.