procuro exemplo de troca de mensagens entre aplicativos com PostMessage e SendMessage
Colegas delphianos
se alguém souber um link para baixar um exemplo de troca de mensagens entre aplicativos que faça uso de PostMessage e SendMessage, por favor, poste o link.
Gostaria de estudar troca de mensagens entre aplicativos
se alguém souber um link para baixar um exemplo de troca de mensagens entre aplicativos que faça uso de PostMessage e SendMessage, por favor, poste o link.
Gostaria de estudar troca de mensagens entre aplicativos
Delmar Observação)
Curtidas 0
Respostas
Delmar Observação)
11/12/2009
Depois de algumas pesquisas consegui fazer funcionar um exemplo de dois aplicativos no mesmo pc trocando mensagens via PostMessage (Windows API)
Venho disponibilizar o código
Aplicação receptora
unit Uprincipal;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
const
CM_AVISOS = WM_USER + 1;
type
Tnprincipal = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
private
procedure CMavisos(var Msg: TMessage); message CM_AVISOS;
{ Private declarations }
public
{ Public declarations }
end;
var
nprincipal: Tnprincipal;
implementation
{$R *.dfm}
procedure TnPrincipal.CMavisos(var Msg: TMessage);
begin
Edit1.Text := IntToStr(Msg.wParam);
Edit2.Text := IntToStr(Msg.LParam);
SetForegroundWindow(handle);
end;
initialization
RegisterClass(Tnprincipal);
finalization
UnRegisterClass(Tnprincipal);
end.
Aplicação emissora
unit UprincipalEnvia;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls;
const
CM_AVISOS = WM_USER + 1;
type
TnprincipalEnvia = class(TForm)
Timer1: TTimer;
Label1: TLabel;
Button1: TButton;
procedure Timer1Timer(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure FormDeactivate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
nprincipalEnvia: TnprincipalEnvia;
implementation
{$R *.dfm}
procedure TnprincipalEnvia.Timer1Timer(Sender: TObject);
begin
SetForegroundWindow(Handle); //handle desta janela
// nprincipalEnvia.WindowState := wsNormal;
end;
procedure TnprincipalEnvia.Button1Click(Sender: TObject);
var aHandle: THandle; //handle da janela do outro aplicativo
begin
aHandle := FindWindow('Tnprincipal', Nil);
if aHandle <> 0 then
PostMessage(aHandle, CM_AVISOS, 20155, 22334) //20155 e 22334 são os valores enviados
else
showmessage('janela não encontrada');
end;
procedure TnprincipalEnvia.FormDeactivate(Sender: TObject);
begin
nprincipalEnvia.WindowState := wsMinimized;
end;
Venho disponibilizar o código
Aplicação receptora
unit Uprincipal;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
const
CM_AVISOS = WM_USER + 1;
type
Tnprincipal = class(TForm)
Edit1: TEdit;
Edit2: TEdit;
private
procedure CMavisos(var Msg: TMessage); message CM_AVISOS;
{ Private declarations }
public
{ Public declarations }
end;
var
nprincipal: Tnprincipal;
implementation
{$R *.dfm}
procedure TnPrincipal.CMavisos(var Msg: TMessage);
begin
Edit1.Text := IntToStr(Msg.wParam);
Edit2.Text := IntToStr(Msg.LParam);
SetForegroundWindow(handle);
end;
initialization
RegisterClass(Tnprincipal);
finalization
UnRegisterClass(Tnprincipal);
end.
Aplicação emissora
unit UprincipalEnvia;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ExtCtrls, StdCtrls;
const
CM_AVISOS = WM_USER + 1;
type
TnprincipalEnvia = class(TForm)
Timer1: TTimer;
Label1: TLabel;
Button1: TButton;
procedure Timer1Timer(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure FormDeactivate(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
nprincipalEnvia: TnprincipalEnvia;
implementation
{$R *.dfm}
procedure TnprincipalEnvia.Timer1Timer(Sender: TObject);
begin
SetForegroundWindow(Handle); //handle desta janela
// nprincipalEnvia.WindowState := wsNormal;
end;
procedure TnprincipalEnvia.Button1Click(Sender: TObject);
var aHandle: THandle; //handle da janela do outro aplicativo
begin
aHandle := FindWindow('Tnprincipal', Nil);
if aHandle <> 0 then
PostMessage(aHandle, CM_AVISOS, 20155, 22334) //20155 e 22334 são os valores enviados
else
showmessage('janela não encontrada');
end;
procedure TnprincipalEnvia.FormDeactivate(Sender: TObject);
begin
nprincipalEnvia.WindowState := wsMinimized;
end;
GOSTEI 0