gpt4 book ai didi

c++ - 从另一个进程访问 STA 对象时出现问题

转载 作者:太空宇宙 更新时间:2023-11-04 12:12:39 26 4
gpt4 key购买 nike

我一直在尝试一些最终可能变成不可能的事情。自从我进入 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:我也尝试过使用 GetRunningObjectTableIRunningObjectTable:RegisterCreateClassMoniker 但是当尝试从 ROT 中获取对象时第二个应用程序,我面临另一个失败。

我的 STA DLL 已正确注册并使用类型库进行编码(marshal)处理(也已注册)。

我是不是遗漏了什么,或者我想做的根本不可能?如果是后者,是否有适合我的简单替代方案?

最佳答案

似乎当你想使用GetActiveObject时,你的 friend 是RegisterActiveObjectRevokeActiveObject。我完全不在了。它现在完美运行!我希望这对某人有所帮助。

关于c++ - 从另一个进程访问 STA 对象时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9185477/

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