Accueil
Rechercher:
sur developpez.com sur les forums
Forums | Tutoriels | F.A.Q's | Participez | Hébergement | Contacts
Club Emploi Blogs   TV   Dév. Web PHP XML Python Autres 2D-3D-Jeux Sécurité Windows Linux PC Mac
Accueil Conception Java DotNET Visual Basic  C  C++ Delphi MS-Office SQL & SGBD Oracle  4D  Business Intelligence
FORUMS DELPHI F.A.Q DELPHI TUTORIELS DELPHI LIVRES COMPOSANTS SOURCES DEFI TELECHARGEZ DELPHI TV
Nono40.developpez.com
Le petit coin du web de Nono40
SOURCES ARTICLES NONOVISU ACCUEIL NOUVELLES
Retour à l'accueil
73 - DIALOGUE PAR MESSAGES ENTRE APPLICATIONS

PRÉSENTATION : Dialogue par message personnalisé.
ZIP : Téléchargez le zip : miroir 1 , miroir 2 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 oeuvre intellectuelle protégée par les droits d'auteurs. Copyright © 2003 Bruno Guérangé. Aucune reproduction, même partielle, ne peut être faite de ce site et de l'ensemble de son contenu : textes, documents, images, etc sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à 3 ans de prison et jusqu'à 300 000 E de dommages et intérêts. Cette page est déposée à la SACD.

Responsables bénévoles de la rubrique Delphi : Nono40 et Pedro - Contacter par EMail :
Vos questions techniques : forum d'entraide Delphi - Publiez vos articles, tutoriels et cours
et rejoignez-nous dans l'équipe de rédaction du club d'entraide des développeurs francophones
Nous contacter - Copyright © 2000-2008 www.developpez.com - Legal informations.