我正在尝试在 Delphi 2010 中的两个应用程序之间传递信息。
我正在使用我过去成功使用过的代码的简化版本(简化是因为我不需要发件人知道发送已成功)我已经将收到的发送归结为一对示例应用程序,其本质如下
发送
procedure TMF.SendString;
var
copyDataStruct: TCopyDataStruct;
s: AnsiString;
begin
s := ebFirm.Text;
copyDataStruct.cbData := 1 + length(s);
copyDataStruct.lpData := PAnsiChar(s);
SendData(copyDataStruct);
end;
procedure TMF.SendData(copyDataStruct: TCopyDataStruct);
var
rh: THandle;
res: integer;
begin
rh := FindWindow(PChar('TMF'), PChar('Get Phone'));
if rh = 0 then
begin
// Launch the target application
ShellExecute(Handle, 'open', GetPhone, nil, nil, SW_SHOWNORMAL);
// Give time for the application to launch
Sleep(3000);
SendData(copyDataStruct); // RECURSION!
end;
SendMessage(rh, WM_COPYDATA, Integer(Handle), Integer(@copyDataStruct));
end;
接收申请
procedure TMF.WMCopyData(var Msg: TWMCopyData);
var
s : AnsiString;
begin
s := PAnsiChar(Msg.CopyDataStruct.lpData) ;
jobstatus.Panels[1].Text := s;
end;
工作测试应用程序和我添加代码的应用程序之间的主要区别在于目标应用程序中正在进行大量额外活动。尤其是在启动时。
关于为什么 WMCopyData 过程似乎根本没有触发的任何建议?
干杯
担