procuro exemplo de troca de mensagens entre aplicativos com PostMessage e SendMessage

11/12/2009

0

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


Delmar Observação)

Delmar Observação)

Responder

Posts

11/12/2009

Delmar Observação)

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;


Responder

Assista grátis a nossa aula inaugural

Assitir aula

Saiba por que programar é uma questão de
sobrevivência e como aprender sem riscos

Assistir agora

Utilizamos cookies para fornecer uma melhor experiência para nossos usuários, consulte nossa política de privacidade.

Aceitar