delphi - IPC使用SendMessage,但接收者具有随机的窗口标题

标签 delphi ipc

我在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/

相关文章:

java - 在 Java Servlet 和普通 Java 应用程序之间进行通信的更好方法

ios - 如何让我的 iOS 应用程序相互通信?

delphi - 在应用程序中为相机制作预览窗口

string - 我可以访问从 Delphi CreateProcess 命令返回的字符串吗?

delphi - 在 Delphi 中将文件复制到剪贴板

android - 在线程内释放对象时出错

delphi - 为什么不调用 Destroy?

tcp - 跨任何操作系统和语言的进程间通信最简单的方法是什么

linux - 不相关进程之间的 mmap 文件

c# - 跨进程连接匿名管道会出现无效句柄错误,我正在使用 System.Io.Pipes