簡體   English   中英

Delphi:如何從PostMessage接收自定義Windows消息?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM