gpt4 book ai didi

windows - 将结构传递给 IDispatch 方法

转载 作者:可可西里 更新时间:2023-11-01 09:22:04 26 4
gpt4 key购买 nike

在第三方 COM 模块中,我必须将结构传递给方法。

IDL 定义的重要部分如下所示:

interface ITheirInterface : IDispatch {
[id(0x0000012d)]
HRESULT TheirMethod([in] TheirStruct Attributes);
};

struct TheirStruct {
BSTR TheirFieldA;
BSTR TheirFieldB;
} TheirStruct;

我如何使用 ATL 从 C++ 调用方法?

CComPtr<IDispatch> comPtr; 
comPtr.CoCreateInstance(L"theirModule.TheirCoClass");
CComVariant returnValue;
CComVariant attribute= I_DO_NOT_KNOW_WHAT_TO_PLACE_HERE;
comPtr.Invoke1(T2COLE(L"TheirMethod"),&attribute,&returnValue);

最佳答案

COM 自动化对结构的支持非常弱,CComVariant 不直接支持它。您需要使用 IRecordInfo 并创建 VT_RECORD 类型的变体。从 GetRecordInfoFromTypeInfo 或 GetRecordInfoFromGuids 获取 IRecordInfo 接口(interface)指针。祝你好运。

关于windows - 将结构传递给 IDispatch 方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4741769/

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