[英]Delphi: How to Receive a Custom Windows Message from PostMessage?
我有兩個應用程序需要通過PostMessage進行通信(排除了SendMessage,因為我需要讓第二個應用程序能夠在被調用時輸出到Excel。
到目前為止, 應用程序1調用應用程序2 ,確保它是打開的,當它被啟用時,應用程序1被設置為禁用。
當用戶完成應用程序2時,我需要將消息發送回 Applciation 1以允許它解鎖。
我在每個應用程序中注冊了相同的Windows消息:
const
MyMessage = 'My-Message';
var
MyMessageID: cardinal;
procedure TMF.FormCreate(Sender: TObject);
begin
MyMessageID := RegisterWindowMessage(MyMessage);
end;
在應用程序2中,我可以使用以下命令將消息發布到應用程序1
targetHandle := FindWindow(Pchar('TMF'), Pchar('Send Test'));
...
if PostMessage(targetHandle, (MyMessageID), 0, 0) then
...
我不明白的是我如何在應用程序1中聲明消息處理程序。
如果我使用標准的Windows消息,例如WM_COPYDATA,我會聲明一個過程
procedure WMCopyData(var Msg: TWMCopyData); message WM_COPYDATA;
但是因為我無法盡早聲明MyMessageID
而失敗了。
也許是因為這是星期五下午,但我錯過了什么?
您不能使用message
關鍵字,因為在編譯時不知道消息常量。 相反,你必須覆蓋WndProc
:
procedure WndProc(var Message: TMessage); override;
....
procedure TMF.WndProc(var Message: TMessage);
begin
inherited;
if Message.Msg = MyMessageID then begin
....
end;
end;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.