gpt4 book ai didi

c++ - 将 IDispatch* 转换为字符串?

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

我正在使用 ATL 将旧的 VB COM 对象(不是我写的)转换为 C++。根据 IDL,其中一种方法采用 IDispatch* 作为参数,此方法的文档和示例声称您可以传递一个字符串(这是一个对象的 progid,它将由控件创建和使用)或 IDispatch* 到已创建的对象。我究竟该如何在 ATL 中实现它?

例如,IDL:

[id(1)] HRESULT Test(IDispatch* obj);

样本(都是 JScript):

obj.Test("foo.bar");

var someObject = new ActiveXObject("foo.bar");
obj.Test(someObject);

更奇怪的是,实现此方法的实际 VB 代码实际上将“obj”参数声明为字符串!然而,这一切似乎都有效。

您甚至可以将字符串传递给采用 IDispatch* 的 COM 方法吗?如果是这样,我能否确定 IDispatch* 实际上是我的 C++ ATL 代码中的一个字符串?更好的是,如果它是一个实现了特定接口(interface)的 IDispatch,我会想调用它的方法,或者实例化一个对象(如果它是一个字符串)。

欢迎任何想法!

最佳答案

声明该方法,使其采用 VARIANT 参数并在运行时检查实际类型。

关于c++ - 将 IDispatch* 转换为字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2328423/

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