首先是发送数据
procedure SendMsg(Msg: string);
var
DS: TCopyDataStruct;
hd: THandle;
begin
Ds.cbData := Length(Msg) + 1;
GetMem(Ds.lpData, Ds.cbData);
StrCopy(ds.lpData, PChar(Msg));
if Hd <> 0 then // 发送WM_COPYDATA消息
SendMessage(Application.MainForm.Handle, WM_COPYDATA, Application.Handle, Cardinal(@ds));
FreeMem(Ds.lpData); //释放资源
end;
然后是接收数据
procedure MyMessage(var t: TWMCopyData); message WM_COPYDATA;
procedure TMainFrame.MyMessage(var t: TWMCopyData);
var
s: string;
begin //接受消息并显示。
s := StrPas(t.CopyDataStruct^.lpData);
if memLog.Lines.Count > 1000 then
memLog.Clear;
memLog.Lines.Add(s);
AddLog(s);
end;
本文地址:[url]http://www.xszlo.com/article/2012-12-08/7612.html[/url],转发请保留这个地址,谢谢
procedure SendMsg(Msg: string);
var
DS: TCopyDataStruct;
hd: THandle;
begin
Ds.cbData := Length(Msg) + 1;
GetMem(Ds.lpData, Ds.cbData);
StrCopy(ds.lpData, PChar(Msg));
if Hd <> 0 then // 发送WM_COPYDATA消息
SendMessage(Application.MainForm.Handle, WM_COPYDATA, Application.Handle, Cardinal(@ds));
FreeMem(Ds.lpData); //释放资源
end;
然后是接收数据
procedure MyMessage(var t: TWMCopyData); message WM_COPYDATA;
procedure TMainFrame.MyMessage(var t: TWMCopyData);
var
s: string;
begin //接受消息并显示。
s := StrPas(t.CopyDataStruct^.lpData);
if memLog.Lines.Count > 1000 then
memLog.Clear;
memLog.Lines.Add(s);
AddLog(s);
end;
本文地址:[url]http://www.xszlo.com/article/2012-12-08/7612.html[/url],转发请保留这个地址,谢谢