visual-c++ - 如何获取 COM 实例的另一个接口?
问题描述
假设我们有一个CLSID_Abc
提供 2 个接口IFoo
和IBar
. 因此,我们已经能够在客户端中执行此操作:
IFoo *foo = nullptr;
::CoCreateInstance(CLSID_Abc, NULL, CLSCTX_INPROC_SERVER, IID_IFoo, (void **)&foo);
foo->a_method_of_ifoo();
IBar *bar;
foo->QueryInterface(IID_IBar, (void **)&bar);
bar->a_method_of_ibar();
现在我们要使用由 .tlb 文件支持的语法。所以我们可以这样做
using namespace Baz;
IFooPtr foo;
foo.CreateInstance("a_mysterious_string_that_I_dont_know_what_it_is_yet_but_lets_pretend_it_works");
foo->a_method_of_ifoo();
问题是使用 .tlb 文件提供的语法时IBar
如何获取接口?foo
解决方案
推荐阅读
- android - 如何在 Android 4+ 的下一个运行循环中访问代码?
- maven - antrun 从不复制罐子
- c++ - 用于返回带有布尔结果标志的值的标准模板
- elasticsearch - 每个节点有多少分片适合弹性搜索?
- python - Python Pandas:比较两个 CSV 文件并通过匹配列从两个文件中删除行
- swift - 带参数的 Alamofire GET 请求,->“调用中的额外参数”
- javascript - 从 namles 对象中检索单独的信息
- c# - 当前应用程序的 Adal.NET 获取令牌
- micronaut - 在 Micronaut 中使用 Spring HTTP Invoker
- css - Bootstrap 3 带有扩展图块的动态图像库