Search code examples
windowsdelphiprocessdelphi-7

Delphi: How to send command to other application?


How to send & receive commands from other Delphi created applications? I want to send command to another application that I've written.


Solution

  • Sender:

    unit Unit1;
    
    interface
    
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls;
    
    const
      WM_MY_MESSAGE = WM_USER + 1;
    
    type
      TForm1 = class(TForm)
        Button1: TButton;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;
    
    var
      Form1: TForm1;
    
    implementation
    
    {$R *.dfm}
    
    procedure TForm1.Button1Click(Sender: TObject);
    var
      h: HWND;
    begin
      h := FindWindow(nil, 'My Second Window');
      if IsWindow(h) then
        SendMessage(h, WM_MY_MESSAGE, 123, 520);
    end;
    
    end.
    

    Receiver:

    unit Unit1;
    
    interface
    
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs;
    
    const
      WM_MY_MESSAGE = WM_USER + 1;
    
    type
      TForm1 = class(TForm)
      private
        { Private declarations }
      protected
        procedure WndProc(var Message: TMessage); override;    
      public
        { Public declarations }
      end;
    
    var
      Form1: TForm1;
    
    implementation
    
    {$R *.dfm}
    
    procedure TForm1.WndProc(var Message: TMessage);
    begin
      inherited;
      case Message.Msg of
        WM_MY_MESSAGE:
          ShowMessageFmt('The other application sent the data %d and %d.', [Message.WParam, Message.LParam]);
      end;
    end;
    
    end.
    

    Make sure that the caption of the receiving form is 'My Second Window'.