Delphi2010の2つのアプリケーション間で情報を渡そうとしています。
過去に正常に使用したコードの簡略化されたバージョンを使用しています(送信者が送信が成功したことを知る必要がないため簡略化されています)受信した送信を2つの例に要約しました本質的に次のようなアプリケーション
送信
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プロシージャがまったく起動していないように見える理由について何か提案はありますか?
乾杯
ダン