COM组件原理_Com组件

COM组件原理_Com组件在COM中,接口就是一个象类,每个接口有一个接口ID(uuid)。一个COM组件通常是连续继承下来的类,比如IUNknow->IDispath->IXX->CXX。这就形成了一个COM组件,当然组件一般是一个钻石继承的样子,这里为了简化原理把他们当成一个串形继承下来。每个COM组件都有一个CLSID(uuid),这个CLSID是注册的时候写进注册表的。这样就可以通过查询注册表中的CLSID

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全家桶1年46,售后保障稳定

在COM中,接口就是一个抽象类,每个接口有一个接口ID(uuid)。一个COM组件通常是连续继承下来的类,比如 IUNknow ->IDispath->IXX->CXX。这就形成了一个COM组件,当然组件一般是一个钻石继承的样子,这里为了简化原理把他们当成一个串形继承下来。

每个COM组件都有一个CLSID(uuid),这个CLSID是注册的时候写进注册表的,可以把这个CLSID理解为这个组件最终可以实例化的子类的一个ID。这样就可以通过查询注册表中的CLSID来找到COM组件所在的dll的名称。然后调用的时候。会调用DllGetClassObject()函数, 这个函数中第一个参数是CLSID,表明想要调用DLL中的哪个组件(需要提醒的是,一个DLL中不一定只有一个组件)。第二个参数为IID。表明要返回这个组件的哪个接口。一般都会有IUnKnow 和IDispath接口。如果想用到IXX接口,就可以使用接口查询来转成IXX接口。如果想使用接口调度,不包含IXX的头文件来调用IXX的方法,就可以使用IDispath接口的Invoke方法。

需要注意的是:COM可以看作一种框架,但这个框架可大可小。有时候我们不需要太多的其它功能。就会对这个框架精简一些(如windows登录机制里的CP)。但原理还是一样的。所以遇到COM组件的时候不要一根筋,非要纠结这个与标准的COM的不同之处。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/234630.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • 根号及运算法则_根号下运算法则

    根号及运算法则_根号下运算法则1.根号及运算法则1.根号及运算法则成立条件:a≥0,n≥2且n∈N。成立条件:a≥0,n≥2且n∈N。成立条件:a≥0,b>0,n≥2且n∈N。成立条件:a≥0,b>0,n≥

  • zero based budgeting_monetdb

    zero based budgeting_monetdbMcObjectODBCimplementsmostoftheODBC3.0standardsexcept‘descriptors’, whicharesupplementary.Currently,theMcObjectODBCdriverreturns“02.00”asthe driverversion.OpenaDOSCMD.EX

    2022年10月14日
  • idea 2021.11 激活【2021免费激活】

    (idea 2021.11 激活)本文适用于JetBrains家族所有ide,包括IntelliJidea,phpstorm,webstorm,pycharm,datagrip等。IntelliJ2021最新激活注册码,破解教程可免费永久激活,亲测有效,下面是详细链接哦~https://javaforall.cn/ide…

  • OkHttp与Retrofit上传文件详解

    OkHttp与Retrofit上传文件详解

  • @NotNull 等注解的简单使用

    @NotNull 等注解的简单使用注册一个账号,有账号+密码前端会做一个判空,但是后端同时也要做一个判空,防止url直接访问这时后端的代码通常是:if(name!=null){ return”账号不能为空,请重新输入”;}elseif(password!=null){ return”密码不能为空,请重新输入”;}这样就会显得特别low,而且极不美观这时候就要用到一个注解@NotNull简单举例说明:@DatapublicclassUserInfo{@NotNull(message=”

  • matlab怎么把图片保存到指定路径_js选择本地文件的路径

    matlab怎么把图片保存到指定路径_js选择本地文件的路径MATLAB指定路径保存图片方法更新时间:2021/04/19imwrite()function[]=saveimg(img,filename) path=input(‘Inputthepathyouwanttouse:’,’s’); %以input()作为输入路径的方式,’s’代表以字符串形式写入path path=append(path,filename); %filename中必须包含图片扩展名 imwrite(img,path); %此function中目标

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号