多くのフォームを持つアプリケーションにメッセージ WM_COPYDATA を送信していますが、受信できません。フォームが 1 つの単純なアプリケーションは問題なく動作します。
このコードはメインフォームにあります。メッセージを受信していません
private
procedure ReceiveMessage(var Msg: TWMCopyData); message WM_COPYDATA;
...
procedure TForm1.ReceiveMessage;
begin
ShowMessage(PAnsiChar(Msg.CopyDataStruct.lpData));
end;
アプリケーションとメインフォームのハンドルを確認しました。したがって、ハンドルは次のようになります。
Form1.Handle (main form) = 3348672
FindWindow result = Application.Handle = 7148290
FindWindowEx(Application.Handle,0,nil,nil) = 0
アプリケーションハンドルに送信されたメッセージはメインフォームにリダイレクトされるという Don's answer のhere( Delphi: What is Application.Handle? ) を読みましたが、私の状況ではそれは起こりません。メッセージを受信するにはどうすればよいですか? メッセージがメイン フォームにリダイレクトされないのはなぜですか?
Delphi XE8、Windows 10 でのテスト