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 //
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;