用WM_COPYDATA发送消息出问题,请高手帮忙
我用WM_COPYDATA在两个独立的程序中传递消息,主要是传递字符串,遇到一个问题.
有时候连续发送几个消息过去接收方接收不到消息,一定要先激活一次接收方的窗体才能正常接收消息,也就是发送一次消息后,点击一下接收方的窗体再通过发送方程序发送消息接收方才能收到下一个消息.
发送方代码:
_________________________________
procedure TForm1.btnSendMessageClick(Sender: TObject);
var
ds: TCopyDataStruct;
hd: THandle;
temp:string;
begin
temp := trim(edt1.text);
ds.cbData := Length(temp) + 1;
GetMem (ds.lpData, ds.cbData );
StrCopy (ds.lpData, PChar (temp));
Hd := FindWindow (nil, '测试窗体');
if Hd <> 0 then
SendMessage (Hd, WM_COPYDATA, Handle,
Cardinal(@ds))
else
ShowMessage ('目标窗口没找到!');
FreeMem (ds.lpData);
end;
---------------------------------------------
接收方代码:
-----------------------
procedure TForm2.Mymessage(var t:TWmCopyData);
var
tempstr:string;
begin
tempstr :=trim ((StrPas(t.CopyDataStruct^.lpData)));
edt1.text := tempstr;
end;