 |
|
 |
|
 |
73 - DIALOGUE PAR MESSAGES ENTRE APPLICATIONS
|
|
|
|
PRÉSENTATION :
Dialogue par message personnalisé.
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.
|