如何发送&从其他Delphi创建的应用程序接收命令?我想将命令发送到我写的另一个应用程序。
答案 0 :(得分:22)
发信人:
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.
接收器:
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.
确保接收表格的标题是“我的第二个窗口”。
答案 1 :(得分:5)
Windows消息可能是一个解决方案 - 可以在此处找到一篇有趣的文章:http://delphi.about.com/od/windowsshellapi/a/aa020800a.htm
答案 2 :(得分:3)
查找进程间通信。适合您的一些轻量级选项可能是:
答案 3 :(得分:1)
如果您正在编写这两个应用程序,TCP / IP可以比Windows消息更清晰。这两个应用程序甚至可以位于网络中的不同计算机上。