• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >vc/mfc > CoCreateInstance的参数CLSID和riid从什么地方得到?

CoCreateInstance的参数CLSID和riid从什么地方得到?

作者:佚名 字体:[增加 减小] 来源:互联网 时间:2017-06-04

佚名通过本文主要向大家介绍了cocreateinstance,cocreateinstance失败,cocreateinstanceex,c cocreateinstance,cocreateinstance函数等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
问题: CoCreateInstance的参数CLSID和riid从什么地方得到?
描述:

知道一个COM借口ITest,如何知道它的clsid和iid
3x


解决方案1:

CLSID
__uuidof(Test)
IID
__uuidof(ITest)

解决方案2:

到hkey_classes_root/interface下面搜索,Itest,可能找到多个,即iid了。iid键的子健里能找到clsid。

解决方案3:

实例化时必须知道CLSID和IID,这一般应由开发组件的人写的帮助文档获得,或者开发者顺便加了一个导出函数以方便创建实例。比如说DirectX就是一堆DLL,里面包含了多个COM组件,因此它也提供了DirectX的SDK文档,并也提供了诸如CreateDirect3D8之类的API以简化和帮助用户创建那种支持IDirect3D8接口的组件,这里用户就不需要知道IDirect3D8的IID和组件的CLSID。
而平时我们用的ActiveX控件绝大部分都没有提供文档,但它们都带有类型库(一般融合进DLL中),可以用OleView进行查看类型信息,里面记录了这个ActiveX控件的CLSID、支持的接口的IID及接口布局,以及许多其他信息。对于使用这种ActiveX控件,由于没有文档,只有查看类型信息,根据接口的成员函数的名字和参数大致猜测它们的用法,而且ActiveX一般都是双接口,也就是实现了IDispatch,则使用时根据CLSID创建的实例接口(IDispatch*),再根据类型库查得欲调用函数的DISPID,通过IDispatch::Invoke调用,这样就不需要知道特定的IID。不过更一般的是通过智能环境(如VC)根据类型库生成包装类,简单地调用包装类的成员函数即可。

解决方案4:

OLEVIEW可以看到
CLSIDFromProgID中的programID可以用Lib和
接口名字拼成
OLEVIEW都可看到

解决方案5:

CLSID clsid;
if(FAILED(::CLSIDFromProgID(L"Word.Document.8",&clsid)))
AfxThrowMemoryException();


分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • CoCreateInstance和CoCreateInstanceEx的区别??
  • 抓狂!看了几天了,CoCreateInstance总是出错!!!!救命啊!
  • 请教CoCreateInstanceEx产生E_ACCESSDENIED的原因
  • CoCreateInstance的内部实现问题??
  • 在DEV-CPP中编译建立快捷方式代码出现incompatibletypeforargument1of`CoCreateInstance'
  • 用dll的COM除了cocreateinstance能不能就当普通DLL用loadlibrary调用。
  • CoCreateInstanceEx问题
  • CoCreateInstance调用成功,CoGetClassObject调用失败,为什么?
  • CoCreateInstance调用出错,帮看看!
  • CoCreateInstance的问题

相关文章

  • 2017-06-04 用MFC做了一个控件,在VC自带的控件测试容器中运行良好,但是在VB中使用的时候,一分配内存就出错,为什么?
  • 2017-06-04 散分~~顺便大家来聊聊ATL以及COM的未来
  • 2017-06-04 net推出后,还有必要学COM吗?
  • 2017-06-04 问个ActiveX接口的问题,怎么定义一个接口传递一个函数指针进去
  • 2017-06-05 如何实现动态APIHOOK
  • 2017-06-04 怎样使自己编写的ActiveX要license?
  • 2017-06-05 为什么析构函数会出错啊?大哥大姐们,救我啊!!!
  • 2017-06-04 在控件中插入word
  • 2017-06-04 为什么总是崩溃啊!!!求大神帮忙,感激不尽
  • 2017-06-05 求操作顾显和钱箱的activex

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • 线程里IWebBrowser的Navigate2方法为什么失败?
    • 用vc开发平面制图软件,需要调用visio的功能,请问如何实现?最好有代码
    • 关于ShockWaveFlash控件的奇怪问题
    • 请教在Win2000下COM调用问题!
    • 从串口取数,定时显示,怎么协调?
    • VC如何从msChart中拷贝图片到Word文档中
    • ActiveX的退出问题
    • 怎么换组件的CLSID!
    • qt里使用cximage老是报error:LNK2019:无法解析的外部符号,咋回事啊?
    • 求助:IRapiSinK的问题,搞不懂啊,懂的进来看看!进来的有分,解决的高分(60分-80分)相送

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有