C++ 从另一进程访问STA对象时出现问题

C++ 从另一进程访问STA对象时出现问题,c++,com,marshalling,atl,C++,Com,Marshalling,Atl,我一直在尝试一些最终可能变成不可能的事情。我好久没到康兰了 考虑两个应用程序和一个COM STA DLL。第一个应用程序将COM STA DLL作为插件加载,该DLL尝试“全局”注册自己,以便第二个应用程序看到它。类似于GetObject(“Excel.Application”) 我尝试了两种方法(可能是同一种方法) 方法1:我尝试使用CoRegisterClassObject注册对象的STA实例。此调用通过S\u OK成功。但是如果我尝试在CoRegisterClassObject之后立即使用

我一直在尝试一些最终可能变成不可能的事情。我好久没到康兰了

考虑两个应用程序和一个COM STA DLL。第一个应用程序将COM STA DLL作为插件加载,该DLL尝试“全局”注册自己,以便第二个应用程序看到它。类似于
GetObject(“Excel.Application”)

我尝试了两种方法(可能是同一种方法)

方法1:我尝试使用
CoRegisterClassObject
注册对象的STA实例。此调用通过
S\u OK
成功。但是如果我尝试在
CoRegisterClassObject
之后立即使用相同的CLSID
GetActiveObject
,我会得到
MK_E_UNAVAILABLE-0x800401e3

GetActiveObject
调用的API是否错误?如果没有,为什么会失败

方法2:我也尝试过使用
GetRunningObjectTable
IRunningObjectTable:Register
CreateClassMoniker
但是当我在第二个应用程序中尝试从ROT访问对象时,我面临着另一个失败

我的STA DLL已正确注册,并使用typelib进行封送处理(也已注册)


我是错过了什么,还是我想做的根本不可能?如果是后者,我有什么简单的选择吗?

当你想使用
GetActiveObject
时,你的朋友是
RegisterActiveObject
RevokeActiveObject
。我完全疯了。它现在工作得很好!我希望这对某人有所帮助。

当你想使用
GetActiveObject
时,你的朋友是
RegisterActiveObject
RevokeActiveObject
。我完全疯了。它现在工作得很好!我希望这对某人有帮助