gpt4 book ai didi

delphi - 将接口(interface)传递给不同的进程

转载 作者:行者123 更新时间:2023-12-03 15:03:28 25 4
gpt4 key购买 nike

我使用WM_COPYDATA来启用我的两个进程A和B之间的通信。使用基本数据类型交换数据没有问题。

现在我有一个问题,在某些情况下我想将一个接口(interface)(IDispatch)从我的进程A传递到我的进程B。这可能吗?

最佳答案

不可能直接将接口(interface)指针传递给另一个进程。与任何其他指针一样,接口(interface)仅在运行时实例化它的进程地址空间中有效。 COM 有自己的跨进程边界(甚至跨同一进程中的不同单元)编码接口(interface)和数据的机制。就接口(interface)而言,涉及到在每个进程/单元中运行并使用各种 IPC 机制(例如管道、RPC 或 TCP/IP)相互通信的代理和 stub 。查看这些文章,了解如何实现跨进程/单元使用接口(interface):

Inter-Object Communication

Understanding Custom Marshaling Part 1

要完成您所要求的操作,而不需要实现自定义编码(marshal)处理,您必须使其中一个进程充当进程外 COM 服务器,然后另一个进程可以使用 CoCreateInstance()GetActiveObject()获取指向在其本地地址空间内工作的服务器对象的接口(interface)指针,并让 COM 为您处理编码详细信息。

关于delphi - 将接口(interface)传递给不同的进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10060528/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com