参考网址: https://blog.csdn.net/whui19890911/article/details/8896554

开发环境:VS2010

开发工程:C++ATL项目

开发目的:创建ActiveX实现js调用

步骤:

1.      创建一个ATL工程

应用程序类型选择动态链接库(DLL),勾选支持COM+1.0,勾选支持部件注册器

2.      选择类视图,添加接口与类

如果没有找到类视图,可以在工具栏中添加上视图

选择工程,右键添加类。选择ATL简单对象。

输入对象信息。

此处的ProgID需要注意,填写之后可在js中通过new ActiveXObject(“你的progID”)创建对象。

勾选支持中的3个选项,我选择的线程模型为单线程,可根据实际需求修改。完成后会发现已经生成了Add.h和Add.c文件。里面有一些红色波浪线提示错误无需管。

3.      依然是类视图中,找到对应的接口添加方法,比如我创建的简单对象名称为Add,这里我们就在IAdd节点上右键添加方法。

添加方法时,需要注意的是out和retval必须为指针类型,否则不让勾选,此处添加三个参数,其中result作为返回值(勾选了retval的参数)。

会发现你如果勾选了一个retval后,就不会再让你添加参数了,表示只能有一个返回值。仅仅勾选out的参数,js没有效果,C#等可以使用这种函数的out参数。

4.      找到Add.c文件,在添加完成的函数中实现具体方法。

5.      编译生成成功后,在工程目录(Debug或者release)下找到AddCom.dll.

使用regsvr32 AddCom.dll命令注册。提示注册成功后,编写一个html代码测试。

6.      两种方式创建对象。

1)  通过object标签创建对象

  1. <object  classid="clsid:4738A542-7AEB-4CE4-86A7-71081B8CE8DA"id="myAddObj"
  2. name="myAddObj " ></object>

类似于这种标签创建的对象,可以通过js直接访问到myAddObj对象。Classid可以在AddCom.idl文件中查找到,library中的coclass Add对应的id。

  1. library AddComLib
  2. {
  3. importlib("stdole2.tlb");
  4. [
  5. uuid(64EC1270-5626-4FDF-888F-41859FB35E15)
  6. ]
  7. coclassCompReg
  8. {
  9. [default]interface IComponentRegistrar;
  10. };
  11. [
  12. uuid(FE912C18-0CFB-4DCA-99FA-6E4BC4B07594)
  13. ]
  14. dispinterface_IAddEvents
  15. {
  16. properties:
  17. methods:
  18. };
  19. [
  20. uuid(4738A542-7AEB-4CE4-86A7-71081B8CE8DA)
  21. ]
  22. coclass Add
  23. {
  24. [default]interface IAdd;
  25. [default,source] dispinterface_IAddEvents;
  26. };
  27. };

2)  通过new ActiveXObject创建对象

  1. var myAddObj = new ActiveXObject("myAddObj.1");

myAddObj也就是在创建简单对象时填写的ProgID,这个可以在Add.rgs资源文件中查找到。

7.      创建完对象就可以直接调用相应的函数了,如刚才实现的一个result = add(arg1,arg2)方法。

  1. var result = myAddObj.add(1,2);
  2. alert(result);

8.对ActiveX控件标记安全

9.将ActiveX打包签名CAB

C++基于ATL工程编写ActiveX控件步骤的更多相关文章

  1. C#编写ActiveX控件

    用C#编写ActiveX控件 http://www.cnblogs.com/homer/archive/2005/01/04/86473.html http://www.cnblogs.com/hom ...

  2. 用C#编写ActiveX控件,开发浏览器控件,注册ActiveX 控件

    用C#编写ActiveX控件,开发浏览器控件,注册ActiveX 控件用C#编写ActiveX控件 开发浏览器控件这是本控件开发完成后的一个简单应用.我们可以利用它以本地文件夹为单位来批量更新服务器的 ...

  3. 用C#编写ActiveX控件

    http://www.cnblogs.com/homer/archive/2005/01/04/86473.html http://www.cnblogs.com/homer/archive/2005 ...

  4. Delphi 编写ActiveX控件(OCX控件)的知识和样例(有详细步骤)

    一.ActiveX应用情况简介: ActiveX控件也就是一般所说的OCX控件,它是 ActiveX技术的一部分.ActiveX是微软公司推出的基于组件对象模型COM的技术,包括对Windows 32 ...

  5. 基于MFC的网页ActiveX控件开发全程实录2(js向ActiveX控件传递参数)

    原文转自 https://blog.csdn.net/qianbin3200896/article/details/81452822 1.ActiveX控件部分(JS到ActiveX控件)继续上一篇博 ...

  6. Qt编写activex控件在网页中运行

    qt能够实现的东西非常多,还可以写activex控件直接在网页中运行.参照qtdemo下的例子即可. 方案一:可执行文件下载:https://pan.baidu.com/s/14ge9ix2Ny0x7 ...

  7. VC++编写ActiveX控件

    ActiveX这门技术是通过生成“*.ocx”文件来实现的.先来了解下OCX文件,在百度百科上面对OCX是这样解释的:“.ocx是ocx控件的扩展名,OCX 是对象类别扩充组件.如果你用过Visual ...

  8. 用ATL和MFC来创建ActiveX控件

    摘要:目前MFC和ATL代表了两种框架,分别面向不同类型的基于Windows的开发.MFC代表了创建独立的Windows应用的一种简单.一致的方法:ATL提供了一种框架来实现创建COM客户机和服务器所 ...

  9. 编写在浏览器中不弹出警告的ActiveX控件

    我们在编写ActiveX控件时,如果用在浏览器中,经常都会弹出现在运行的脚本不安全的提示, 如果给客户使用,将会带来极大不便.按照MSDN的介绍通常有两种一种是实现IObjectSafe接口,一种是通 ...

随机推荐

  1. Vue高阶

    Vue.cli是基于vue应用开发提供的一个脚手架工具,为应用搭建基础的框架架构,提供插件.开发服务.打包等功能. 1. 安装 node.js是一个JavaScript的运行环境,提供了一个事件驱动. ...

  2. 记录APP 启动ACTIVITITY

    a.启动待测apkb.开启日志输出:adb logcat>D:/log.txt c.关闭日志输出:ctrl+cd.查看日志找寻: Displayed com.mm.android.hsy/.ui ...

  3. SpringBoot 整合 MybatisPlus 3.0

      CRUD是指在做计算处理时的增加(Create).读取查询(Retrieve).更新(Update)和删除(Delete)几个单词的首字母简写.主要被用在描述软件系统中DataBase或者持久层的 ...

  4. [刘阳Java]_Spring AOP注解详细介绍_第8讲

    这节内容非常关键,我们会比较详细地介绍Spring AOP注解的使用 1. 要使用Spring AOP注解,必须满足如下的事项 导入Aspectj的jar.Spring3.0-AOP.jar.aopa ...

  5. Redis学习——数据结构上

    一.常用的全局命令 1.查看所有的键: KEYS * KEYS pattern:查找所有符合给定模式 pattern 的 key . KEYS 的速度非常快,但在一个大的数据库中使用它仍然可能造成性能 ...

  6. deepin安装Motrix,cocomusic

    1,motrix(下载工具):https://motrix.app/ 2,cocomusic(开源音乐播放器):https://github.com/xtuJSer/CoCoMusic/release ...

  7. Java规范的三种注释方式:

    1.单行注释 // //单行注释 2.多行注释 /* */ /* 多行 注释 */ 3.文档注释[java特有的] /** */ ◆注释内容可以被JDK提供的工具javadoc所解析,生成一套以网页文 ...

  8. Android系统编程入门系列之界面Activity响应多元的属性动画

    在响应丝滑动画一篇文章中,分别介绍了作用于普通视图.绘制视图的绘制对象.和界面这三种对象的动画效果,但是都有一些使用的局限性.比如这些动画都只是以屏幕上绘制更新的方式绘制动画,并没有真实改变作用对象的 ...

  9. vue函数式组件详解

    本篇将详细介绍vue组件化之函数式组件,会用到以下api: Vue.component().Vue.extend().$createElement.patch(). 从事vue开发的小伙伴,平时组件化 ...

  10. [Vue warn]: Invalid prop: type check failed for prop "percentage". Expected Number, got Null

    Vue组件报错 <ElProgress> at packages/progress/src/progress.vue 用了element组件 绑定数据时后端给我们传的参数为null,所以组 ...