我在Google发现“ Delphi Inter Process Communication (IPC) using SendMessage”。
这是来自Sender的一段代码,用于为Receiver发送消息:
procedure TfrmClient.FormCreate(Sender: TObject);
begin
MyMsg := RegisterWindowMessage('MyMessage');
ServerApplicationHandle := FindWindow('TApplication', 'Project1');
end;
问题是我的接收者的标题名称随机。那么我如何发送消息给接收者呢?任何想法?
我的发件人是DLL,我的收件人是Exe。
最佳答案
一种明显的解决方案是EXE将DLL的句柄赋予DLL,该DLL应当将消息发送到该窗口。 EXE将在DLL中调用一个函数,因此这是提供窗口句柄的最佳时机。消除所有猜测。 (为此,EXE可以仅向DLL提供函数的地址,以完全调用和跳过消息。)
另一种解决方案是广播消息。调用HWND_BROADCAST
时,请使用特殊的窗口句柄SendMessage
,消息将转到系统中的所有顶级窗口。只有其他注册了相同消息ID的窗口在接收到该消息时才会执行任何操作。其他人应该简单安全地忽略它。
关于delphi - IPC使用SendMessage,但接收者具有随机的窗口标题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2452048/