C++ 从另一进程访问STA对象时出现问题
我一直在尝试一些最终可能变成不可能的事情。我好久没到康兰了 考虑两个应用程序和一个COM STA DLL。第一个应用程序将COM STA DLL作为插件加载,该DLL尝试“全局”注册自己,以便第二个应用程序看到它。类似于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之后立即使用
GetObject(“Excel.Application”)
我尝试了两种方法(可能是同一种方法)
方法1:我尝试使用CoRegisterClassObject
注册对象的STA实例。此调用通过S\u OK
成功。但是如果我尝试在CoRegisterClassObject
之后立即使用相同的CLSIDGetActiveObject
,我会得到MK_E_UNAVAILABLE-0x800401e3
GetActiveObject
调用的API是否错误?如果没有,为什么会失败
方法2:我也尝试过使用GetRunningObjectTable
,IRunningObjectTable:Register
和CreateClassMoniker
但是当我在第二个应用程序中尝试从ROT访问对象时,我面临着另一个失败
我的STA DLL已正确注册,并使用typelib进行封送处理(也已注册)
我是错过了什么,还是我想做的根本不可能?如果是后者,我有什么简单的选择吗?当你想使用
GetActiveObject
时,你的朋友是RegisterActiveObject
和RevokeActiveObject
。我完全疯了。它现在工作得很好!我希望这对某人有所帮助。当你想使用GetActiveObject
时,你的朋友是RegisterActiveObject
和RevokeActiveObject
。我完全疯了。它现在工作得很好!我希望这对某人有帮助