我正在尝试在 Delphi 中的两个 Windows 应用程序之间进行通信。发送方使用 WM_COPYDATA 通过 SendMessage 发送命令。那部分工作正常。接收方是否有可能在同一个调用中回复一些结果字符串?它对我来说失败了,下面就是现在正在发生的事情。

  • 发送方使用 WM_COPYDATA 使用阻塞调用 SendMessge 向接收方发送命令。
  • 接收器处理命令并修改 COPYDATASTRUCT 的一些结果字符串,这些字符串必须发送回发送器并退出事件处理程序
  • 接收器的“SendMessage”函数返回,但 COPYDATASTRUCT 的内容仍然没有改变。

  • 显然,Windows 的消息传递机制没有在两个应用程序之间共享 COPYDATASTRUCT 内存。相反,它正在制作副本。

    最佳答案

    WM_COPYDATA 就像它所说的那样:它将数据从源进程复制到目标进程。它不会将数据从目标进程复制回源进程。如果您想要双向通信,请向另一个方向发送另一条消息。

    关于delphi - WM_COPYDATA : Can the receiver modify the COPYDATASTRUCT contents?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/9796952/

    10-12 02:38