2024/4/17 14:44作者:jerryURL:https://www.jb51.net/article/201113.htmvs2019 Com组件初探之大略COM编写与实现跨措辞调用的方法条件条件 1、节制C++根本语法 2、平台安装 vs2019 3、本地平台为 windows 10 1909 X64 4、理解vbs根本语法本次目标 1、节制Com组件的观点及事理 2、编写一个大略的以DLL形式展现的Com组件 3、通过 VBS 实现跨措辞调用COM1、Com组件观点及事理 什么是COM: 引用百度百科:COM component(COM组件)是微软公司为了打算机工业的软件生产更加符合人类的行为办法开拓的一种新的软件开拓技能。在COM构架下,人们可以开拓出各种各样的功能专一的组件,然后将它们按照须要组合起来,构成繁芜的运用系统。由此带来的好处是多方面的:可以将系统中的组件用新的更换掉,以便随时进行系统的升级和定制;可以在多个运用系统中重复利用同一个组件;可以方便的将运用系统扩展到网络环境下;COM与措辞,平台无关的特性使所有的程序员均可充分发挥自己的才智与专长编写组件模块。 (个人理解:com组件便是一种标准,遵照此标准开拓出来的组件则为COM组件,同样任何措辞只要遵照此标准,就可以调用该组件。而com组件实质上便是二进制可实行文件,com以 DLL 或 EXE 形式发布的) 什么是ATL: 引用百度百科:ATL是ActiveX Template Library 的缩写,它是一套C++模板库。利用ATL能够快速地开拓出高效、简洁的代码(Effective and Slimcode),同时对COM组件的开拓供应最大限度的代码自动天生以及可视化支持。为了方便利用,从MicrosoftVisual C++5.0版本开始,Microsoft把ATL集成到Visual C++开拓环境中。1998年9月推出的Visual Studio 6.0 集成了ATL 3.0版本。ATL已经成为Microsoft标准开拓工具中的一个主要成员,日益受到C++开拓职员的重视。 (个人理解:ATL 便是微软发布的一个C++模板目的是为了简化COM编程) 什么是ActiveX: 引用百度百科:ActiveX是Microsoft对付一系列策略性面向工具程序技能和工具的称呼,个中紧张的技能是组件工具模型(COM)。在有目录和其它支持的网络中,COM变成了分布式COM(DCOM)。ActiveX 控件是用于互联网的很小的程序,有时称为插件程序。它们会许可播放动画,或帮助实行任务,如在 Microsoft Update 安装安全更新,因此可以增强您的浏览体验。在创建包括ActiveX程序时,紧张的事情便是组件,一个可以自足的在ActiveX网络(Windows,Mac,Linux)中任意运行的程序。这个组件便是ActiveX控件。ActiveX是Microsoft为反抗Sun Microsystems的JAVA技能而提出的,此控件的功能和java applet功能类似。 (个人理解:ActiveX便是Com组件凑集的名字,并且紧张用在web方面,实质上便是COM)这里引用360百科的词条[ 大口语随意马虎理解 ]2、编写一个大略的Com组件 VS2019 新建基于ATL模板的项目 下一步设置项目名 (把稳:项目名一定要记住) 然后创建 设置ATL项目属性 (这里设置基于.dll 办法) 这里说一下“支持组件注册”指的是 编译结束后会自动进行组件注册 选择后点击确定,并等待创建完成 完成后会涌现ComTest和ComTestPs,不用管PS 我们点开ComTest并且可以看到系统自动天生的头文件和源文件 现在添加一个新的ATL工具 右键ComTest 新建项->添加->新建项 对 ComTest 新建 “ATL大略工具”并点击添加 设置短名称为Temp 其他的会自动添补 ProgID 设置为 项目名+“.”+短名称 (ComTest.Temp ) 文件类型以及其他默认就好点击完成 这里须要把稳两个值 ProgID 是之后 vbs 及其他措辞 调用组件所须要供应的名称 接口 ITemp 为之后配置 idl 所须要找到的接口名 完成后会在ComTest 下自动添加 Temp.h 以及 Temp.cpp以及天生一个CTemp类 现在就可以创建我们自己的方法 Temp.h头文件中给CTemp添加函数声明 在 Temp.cpp 文件中实现此函数 值得一提的是 __result 必须为指针用来进行返回 return 默认为 S_OK表示实行成功 定义好方法后打开 ComTest.idl 还记得我们在创建ATL大略工具时候设置的“短名称”吗 (ITemp 自动命名规则为 I+短名称) 找到这一段 interface ITemp : IDispatch 在interface ITemp : IDispatch 里面写入 [in] 表示 输入[out] 表示输出 [retval] 表示作为返回值给外界 值得一提的是 retval 必须只能有一个 而且必须跟在out 后面以上就写好了ComTest组件的全部内容 选择天生的位数 x64快捷键 Ctrl + b 天生 dll 这里会看到天生报错 不用管他 打开我们的项目目录 可以看到第一个为天生的ComTest.dll 接下来 注册Com组件 这里把稳两个文件 ComTest.dll 为 Com 组件本体 ComTest.tlb 是之后C++ 调用Com所须要包含的文件 管理员权限打开 cmd 或者 powershell 并进入到dll存在的目录 输入命令注册我们的DLL 输入后会涌现 已成功 如果不堪利考试测验在管理员权限下去注册 3、通过 VBS 实现跨措辞调用COM 编写vbs代码 ComTest.Temp为“ATL大略工具”设置的“ProgID”而Number为类中的函数名 保存并运行 实行成功 把稳事变: vbs调用的com必须为IDispatch 接口 vs2019 ATL 默认为 继续 IDispatch 接口 Com组件必须注册后VBS才可以调用
