2个exes是否可以通过COM(ActiveX?)界面进行通信? COM DLL可以协调两个单独进程之间的数据共享吗?
答案 0 :(得分:1)
如果您想在两个流程之间进行通信,请使用named pipe。
(可以调用远程COM对象并以这种方式共享数据,但它不必要地复杂。)
答案 1 :(得分:1)
显然,你的问题的答案是肯定的。
后续行动是:
#1的答案将通知#2。
但是我们说COM是最适合您的解决方案。如果进程A中有一些想要在进程B中执行某些操作的代码,则在b.exe中注册COM对象,然后处理A CoCreateInstance()对象。 COM将启动b.exe,创建传递给CoCreateInstance()的CLSID指定的对象,然后为您在CoCreateInstance()的IID参数中请求的指定接口提供poitner。现在,您可以从进程A调用进程B中对象的方法。
如果您有其他问题或说明,请随时跟进。
COM将为您整理基本数据类型(基本上是VARIANT支持的所有内容)。
答案 2 :(得分:0)
您可以查看Sharing the CoffeeMonitor以获取用VB6编写的简单示例。这可能对于n路通信最有用,而不是简单的一对一场景。
另一种方法可能是使用Mailslots,与命名管道不同,它可以以类似于UDP广播的方式使用广播。
答案 3 :(得分:0)
是否可以协调两个单独进程之间的数据共享?
警告:该DLL有两个实例,每个进程一个。如果DLL具有/管理数据,则DLL的每个实例都将拥有自己的数据:不会在进程之间共享数据。
可以让2个exes通过com接口进行通信,其中COM接口支持的方法,我不知道,putData
和getData
,但我认为您可能希望将此COM对象构建/打包/安装为进程外(*.exe
)COM对象,而不是作为进程内*.dll
})COM对象。
或者如果你确实使用了DLL,你必须实现它们以应对它们有两个独立的实例:例如它应该使用跨进程互斥体而不是进程内关键部分,并交叉处理共享内存而不是进程内私有堆内存。
这可能不是协调数据共享的最佳方式,但它可能是 方式。
答案 4 :(得分:0)
是的,2个exes可以通过COM接口进行通信。
COM客户端和COM服务器可以在同一个进程中 在同一台计算机上或两台上有两个独立的进程 不同的电脑。
答案 5 :(得分:0)
DCOM(分布式COM)是与在单独进程(甚至是机器)中运行的COM对象进行通信的技术。虽然如果你详细说明你的场景会有所帮助,但你可能会有更好的选择。