我發送WM_COPYDATA消息給我的應用程序,它有很多表單,但我無法收到它。 簡單的應用程序與一種形式工作正常。如何接收消息(WM_COPYDATA)?
我在主窗體中有此代碼。沒有收到消息
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
我在這裏(Delphi: What is Application.Handle?)在唐的答案念過被送往應用處理的消息被重定向到的主要形式,但在我的情況它沒有發生。 如何接收消息? 爲什麼消息不會重定向到主表單?
測試Delphi下XE8時,Windows 10
*「..發送到應用程序句柄的消息被重定向到主窗體..」* - 沒有。 –
*我如何接收消息?*:通過編寫該消息的消息處理程序。 *爲什麼消息不被重定向到主表單?*:我們怎麼知道?你沒有顯示消息的發送方式(或來自哪裏)。請爲發送消息的小應用程序提供一個MCVE,以及旨在接收不這樣的消息的小應用程序。 –
唐的回答說消息被轉發到主窗體「視情況而定」。這只是主窗體和應用程序窗口假裝爲單個窗口所必需的一小部分消息。 wm_CopyData消息不在其中。您可以檢查* Forms.pas *以確認Don的斷言。 –