话就不再多说了。把代码贴上来吧。
发送端:
procedure SendMsgToOtherProgram(const AMsg, ATitle: string);
var
ds: TCopyDataStruct;
hCurrentWindow: HWnd;
szText: array[0..254] of char;
begin
ds.cbData := Length(AMsg) + 1;
//为传递的数据区分配内存
GetMem(ds.lpData, ds.cbData);
StrCopy(ds.lpData, PChar(AMsg));
hCurrentWindow := GetWindow(Application.Handle, GW_HWNDFIRST);
while hCurrentWindow <> 0 do
begin
hCurrentWindow := GetWindow(hCurrentWindow, GW_HWNDNEXT);
GetWindowText(hCurrentWindow, @szText, 255);
//Application.MessageBox(PChar(Strpas(@szText)),'',mb_IconError);
if Strpas(@szText) = ATitle then
begin
// 发送WM_COPYDATA消息
SendMessage(hCurrentWindow, WM_COPYDATA, 0, Cardinal(@ds));
Break;
end;
end;
//释放资源
FreeMem(ds.lpData);
en