如何获取通过指针传递的参数值
IAutomation - How retrieve value of argument which passed by pointer?
IAutomation -如何检索由指针传递的参数值?
在。idl文件中写入:
interface IAutomation : IDispatch {
[id(0x000000e0), helpstring("Returns if the player is ready. Many of the other commands fail as long as the player is not ready.")]
HRESULT GetReady([out] VARIANT* Ready);
};
我想,GetReady() -方法,而不是属性。
如果我试图使用VOLE库:
object player = object::create("StereoPlayer.Automation", CLSCTX_LOCAL_SERVER, vole::coercion_level::valueCoercion);
VARIANT var;
::VariantInit(&var);
VARIANT pos = player.invoke_method(vole::of_type<VARIANT>(), L"GetReady", var);
但是收到链接错误:
error LNK2019: unresolved external symbol "public: static struct tagVARIANT __cdecl vole::com_return_traits<struct tagVARIANT>::convert(struct tagVARIANT const &,enum vole::coercion_level::coercion_level)" (?convert@?$com_return_traits@UtagVARIANT@@@vole@@SA?AUtagVARIANT@@ABU3@W4coercion_level@42@@Z) referenced in function "public: struct tagVARIANT __thiscall vole::object::invoke_method<struct tagVARIANT,struct tagVARIANT>(struct vole::of_type<struct tagVARIANT>,unsigned short const *,struct tagVARIANT const &)" (??$invoke_method@UtagVARIANT@@U1@@object@vole@@QAE?AUtagVARIANT@@U?$of_type@UtagVARIANT@@@1@PBGABU2@@Z)
调用其他不返回任何结果的方法,效果很好。
我也尝试直接调用方法IDispatch::Invoke()描述如何使用Visual c++访问自动化文档属性. 但是也误解了如何返回值。
我不熟悉VOLE,但如果我正确阅读其源代码,您需要这样做:
VARIANT pos = player.invoke_method<VARIANT>(L"GetReady");
或:
VARIANT pos = player.invoke_method(vole::of_type<VARIANT>(), L"GetReady");
您试图将VARIANT
作为[in]
参数传递给GetReady()
,但它没有这样的参数。它有一个[out]
参数,它由invoke_method()
的返回值表示,所以你不需要传入你自己的VARIANT
参数。
invoke_method()
在内部执行VARIANT
到类型的转换,因此假设GetReady()
实际上返回一个用VARIANT
包装的布尔值,您甚至可以这样做:
VARIANT_BOOL ready = player.invoke_method<VARIANT_BOOL>(L"GetReady");
甚至:
bool ready = player.invoke_method<bool>(L"GetReady");
相关文章:
- 为函数定义符号不明确的指针参数
- 构造函数 (C++) 中的 char 指针参数存在问题
- 按引用调用与按指针参数调用的差异 前递增和后递增
- 为什么具有指针参数的成员函数需要指向指针的指针?
- 通过引用函数传递指针参数是什么意思?
- 从double到double*的指针参数
- void 函数中的指针参数返回不一致的值
- 无法向上转换指针到指针参数
- 将数组动态分配到具有指针参数的函数中
- 模板函数指针参数与构造函数参数
- 使用通用函数指针参数化函数模板的简洁方法
- 如何为C++字符串分配空指针参数?
- C++带有指针参数的函数
- 指针参数的默认值
- 将常量添加到函数模板指针参数
- 如何传递unique_ptr<T>代替原始*输出*指针参数?
- 不带星号的函数指针参数
- 功能指针参数参数转换为const
- 将指针参数传递给双指针参数
- 如何调试指针参数是否通过函数修改