从另一个进程访问STA对象时出现问题
Problems getting access to a STA object from another process
我一直在尝试一些最终可能会变成不可能的事情。我已经很久没有来COM了。
考虑两个应用程序和一个COM STA DLL。第一个应用程序加载COM STA DLL作为插件,这个DLL试图"全局"注册自己,以便第二个应用程序看到它。类似于GetObject("Excel.Application")
。
我尝试了两种方法(可能会变成相同的方法)。
方法1:我尝试使用CoRegisterClassObject
来注册对象的STA实例。此调用使用S_OK
成功。但是,如果我尝试在CoRegisterClassObject
之后立即使用相同的CLSID来GetActiveObject
,则会得到MK_E_UNAVAILABLE - 0x800401e3
。
GetActiveObject
是要调用的错误API吗?如果不是,为什么会失败?
方法2:我也尝试过使用GetRunningObjectTable
、IRunningObjectTable:Register
和CreateClassMoniker
,但当我试图在第二个应用程序中从ROT获取对象时,我遇到了另一个失败。
我的STA DLL已正确注册,并使用typelib进行封送处理(也已注册)。
我是错过了什么,还是我想做的根本不可能?如果是后者,我有什么简单的选择吗?
当你想使用GetActiveObject
时,你的朋友似乎是RegisterActiveObject
和RevokeActiveObject
。我完全疯了。现在效果很好!我希望这能帮助到别人。
相关文章:
- 在CToolBar对象中使用PNG时出现问题
- 将父类对象强制转换为子类的问题
- 类对象数组的问题会导致崩溃
- 在C++中遇到对象和类问题
- 在 Android Studio 中使用 C++ 共享对象时出现问题
- 在C ++ ASIO中,如何为HTTP或HTTPS创建相同的套接字对象(接口/抽象问题?
- 由于缺少类模板,NVCC 编译面向对象代码时出现问题
- C++删除/(递归)对象销毁问题
- C++ - 面试问题中的堆栈上的对象
- 将四元数旋转的游戏对象旋转另一个四元数时出现问题
- 通过 COM 对象连接 x64 应用程序时出现问题
- 擦除矢量问题矢量中的对象
- 将任意对象附加到数组有什么问题
- 在C++中将类实例添加到对象层次结构中的问题
- (2 问题)"类"类型重新定义(即使 #pragma 一次),以及静态函数内的静态成员对象初始化?
- C++ 迭代后销毁对象的问题
- "Extern"对象问题:错误:Id 返回 1 个退出状态
- 将文件从 iOS 应用程序加载到 C++ 对象中/<iostream>iOS 上的问题
- 错误 C2280 / 在 std::vector 中实例化对象时复制构造函数出现问题?
- 与 32 位共享对象的链接问题