不知道你是怎么写的,下面是我经常用到的,决对没有问题发送端:procedure Init; var s : pchar; h : hwnd; buf:tagCOPYDATASTRUCT; begin h := FindWindow('TForm1', Nil); if h <> 0 then begin GetMem(s,100); buf.lpData :=s; buf.cbData:=100; buf.dwData :=100; strpcopy(s, ParamStr(0)); SendMessage(h, WM_COPYDATA, 0, integer(@buf)); end; end;接收端: procedure TForm1.WM_COPYDATA(var msg: TMessage); var P:^tagCOPYDATASTRUCT; begin p:=Pointer(Msg.lParam); ShowMessage(strpas(p.lpData)); end;
发送消息后是否还该加上Application.HandleMessage试试瞧!
var
s : pchar;
h : hwnd;
buf:tagCOPYDATASTRUCT;
begin
h := FindWindow('TForm1', Nil);
if h <> 0 then
begin
GetMem(s,100);
buf.lpData :=s;
buf.cbData:=100;
buf.dwData :=100;
strpcopy(s, ParamStr(0));
SendMessage(h, WM_COPYDATA, 0, integer(@buf));
end;
end;接收端:
procedure TForm1.WM_COPYDATA(var msg: TMessage);
var
P:^tagCOPYDATASTRUCT;
begin
p:=Pointer(Msg.lParam);
ShowMessage(strpas(p.lpData));
end;
我也是因为这个问题折腾了好多天!!好像Delphi开着时候有些功能就是实现不了。