发送程序为:
SendMessage(hWnd, WM_USER + 1, 0, Integer(PChar('hello world')));接收程序为:
procedure TForm1.WndProc(var Message: TMessage);
begin
if Message.Msg = WM_USER + 1 then
begin
//如何接收传递过来的字符串'hello world'
end
else
inherited WndProc(Message);
end;
SendMessage(hWnd, WM_USER + 1, 0, Integer(PChar('hello world')));接收程序为:
procedure TForm1.WndProc(var Message: TMessage);
begin
if Message.Msg = WM_USER + 1 then
begin
//如何接收传递过来的字符串'hello world'
end
else
inherited WndProc(Message);
end;
进程间要进行字符串内容的通讯,SendMessage不是一个好方法。换命名管道、DDE、Socket、共享内存……吧。
发送:
TForm1 = class(TForm)
Edit1: TEdit;
private
{ Private declarations }
public
procedure Send(Msg:string);
procedure Mymessage(var t:TWmCopyData);message WM_COPYDATA;
{ Public declarations }end;varForm1: TForm1;implementationprocedure TForm1.Send(Msg:string); //发送数据
var
ds: TCopyDataStruct;
begin
ds.cbData := Length (Msg) + 1;
GetMem (ds.lpData, ds.cbData ); //为传递的数据区分配内存
StrCopy (ds.lpData, PChar (Msg));
SendMessage (Handle, WM_COPYDATA, Handle,Cardinal(@ds)) // 发送WM_COPYDATA消息
FreeMem (ds.lpData);
end;procedure TForm2.Mymessage(var t:TWmCopyData);
begin
Edit1.text:=StrPas(t.CopyDataStruct^.lpData);//接受数据并显示。
end;