自从Microsoft公司于1996年推出ActiveX技术以来,ActiveX技术已得到了许多软件公司的支持和响应,并纷纷在其产品中融入ActiveX技术。而作为ActiveX技术之一的ActiveX控件也得到了迅猛的发展,不但各大软件公司推出了不少ActiveX 控件,ActiveX控件更是得到一般开发者的喜爱。那么,什么是ActiveX控件呢?ActiveX控件是一个动态链接库,是作为基于COM服务器进行操作的,并且可以嵌入在包容器宿主应用程序中,ActiveX控件的前身就是OLE控件。由于ActiveX控件与开发平台无关,因此,在一种编程语言上开发的ActiveX控件可以无须任何修改,即可在另一种编程语言中使用,其效果如同使用Windows通用控件一样。如:在VC++中开发的ActiveX控件,不作任何修改即可应用于VB中。由此可见,通过使用ActiveX控件即可实现快速小型的组件重用、实现代码共享,从而提高编程效率。从上面亦可看出为何ActiveX控件如此广泛地受到开发者的欢迎。

   因为ActiveX控件的可重用性,加上Internet的普及,ActiveX控件得到了极大的发展,目前,从Internet上可以得到相当多的ActiveX控件,而且品种繁多,所完成的任务几乎无所不包。对普通开发者来说,只要有耐心,都能从Internet上找到符合自己要求的ActiveX控件。

   从Internet下载的ActiveX控件,或从其他途径得到的ActiveX控件,用户应该怎样做才能正确使用ActiveX控件或将其应用于自己的程序中呢?一般来说,一个外来ActiveX控件要在Windows中被正确使用,首先必须将控件文件(*.OCX)复制到硬盘中,然后将其在Windows中注册,未在Windows中注册过的ActiveX控件是不能使用的。注册ActiveX控件一般来说有三种途径:

   1. 使用Regsvr32.exe程序对ActiveX控件进行注册;

   2. 使用安装程序制作软件:InstallShield;

   3. 在应用程序中加入注册代码。

   上述方法适用范围不同,各有各的优点,下面分别讨论。

   一、 使用Regsvr32.exe程序对ActiveX控件进行注册

   对于未注册过的ActiveX控件可使用此软件对其进行注册,外来ActiveX控件要应用到自己的程序中也必须进行注册。该文件位于Windows目录的system子目录下。使用方法如下:点击“开始”→“运行”;在运行对话框中输入以下命令:

regsvr32   < 文件名 >         注册一个ActiveX控件
regsvr32   /u   < 文件名 >     解除某ActiveX控件的注册
   我们使用一些带ActiveX控件的应用程序时,有时会出现不能运行的情况,这有可能是其自带ActiveX控件未注册所至,这时不妨使用上述命令一试。另外,VC++使用者若对regsvr32.exe的编码感兴趣的话,可在VC++的联机帮助中找到其源代码。若使用VC++ 6.0,则在MSDN光盘的/sample/VC98/MFC/controls/regsvr中。  
   二、 使用安装程序制作软件:InstallShield

   使用regsvr32.exe来注册ActiveX控件虽然简单,但需要用户手工注册,在不用时还得手工解除注册,因此,这对一个应用程序来说并非好的解决方案。大型应用软件一般都有一个安装程序,在安装程序中解决ActiveX控件注册是较为理想的一种方案。使用InstallShield可以制作出专业级的Setup,还可注册其中的ActiveX控件;而且,在以后携载软件时,自动注销掉以前注册的ActiveX控件。方法如下:

   1. 启动InstallShield,使用Project Wizard建立一个新的项目;

   2. 新建一个“File Group”,将需要注册的ActiveX控件文件放入此“File Group”中;

   3. 将上述“File Group”的“Self-Registered”属性设置成“Yes”。

   上述步骤仅为制作Setup中设置自动注册ActiveX控件几步,至于使用InstallShield怎样制作一个完整的Setup不在本文讨论范围之中,请读者自己参看有关书籍。

   三、 在应用程序中加入注册代码

   对于小型程序不宜采取第二种方法,较好的方法是在程序中嵌入注册代码,实现应用程序自注册。其编程方法是:

   1. 使用Windows API函数LoadLibrary载入ActiveX控件;

   2. 使用GetProcAddress函数获取ActiveX控件中注册函数DllRegisterServer(注销函数为DllUnregisterServer)指针;

   3. 调用注册函数DllRegisterServer(或注销函数DllUnregisterServer)。

   下面以VC++ 6.0编写的RegActivex程序为例,介绍怎样在程序中自动注册(注销)ActiveX控件。RegActivex的主体框架由VC++ 6.0的AppWizard自动产生,在其基础上增加两个菜单项:“注册ActiveX控件”、“注销ActiveX控件”。当选择“注册ActiveX控件”菜单时,将对控件toweratl.ocx(一个汉诺游戏)进行注册;当选择“注销ActiveX控件”菜单时,将解除控件toweratl.ocx的注册。

   1. 使用VC++ 6.0建立一个单文档的应用程序RegActivex,其他项目接受默认设置;

   2. 给应用程序增加两个菜单项:“注册ActiveX控件”、“注销ActiveX控件”,步骤如下:

   ① 单击VC++ 6.0左边窗口的“ResoureView”,双击MENU项目下的IDR_MAINFRAME以打开菜单编辑器;

   ② 在菜单编辑器中,加入一个主菜单“注册”,在“注册”主菜单下加入两个菜单项:“注册ActiveX控件”、“注销ActiveX控件”;

   3. 给新建的菜单项 “注册ActiveX控件” 和“注销ActiveX控件”增加响应函数:

   ① 在资源编辑其中,双击MENU中的IDR_MAINFRAME打开菜单编辑器,单击“注册ActiveX控件”,按Ctrl+W打开MFC Class Wizard;

   ② 双击Messages框中的COMMAND,给“注册ActiveX控件”菜单项增加响应函数OnRegisterReg(),单击右边“Edit”按钮给OnRegisterReg()函数增加如下代码:

void CMainFrame::OnRegisterReg()
   {
   //ActiveX控件的路径及文件名
   LPCTSTR pszDllName="toweratl.ocx";
         //装载ActiveX控件
   HINSTANCE hLib = LoadLibrary(pszDllName);
         if (hLib < (HINSTANCE)HINSTANCE_ERROR)
         {
                 MessageBox("不能载入Dll文件!","结果",MB_OK);
                 return;
         }
   //获取注册函数DllRegisterServer地址
         FARPROC lpDllEntryPoint;  
         lpDllEntryPoint = GetProcAddress
(hLib,_T("DllRegisterServer"));
         //调用注册函数DllRegisterServer
if(lpDllEntryPoint!=NULL)
         {
                 if(FAILED((*lpDllEntryPoint)()))
                 {
MessageBox("调用DllRegisterServer  
失败!","结果",MB_OK);
FreeLibrary(hLib);
return;
                 };
MessageBox("注册成功","结果",MB_OK);
         }
         else
MessageBox("调用DllRegisterServer失败!"
,"结果",MB_OK);
}
   ③ “注销ActiveX控件”菜单项响应函数的编写方法同上,代码也相似,只是将  
“lpDllEntryPoint=GetProcAddress
(hLib,_T("DllRegisterServer"));”改成:
         lpDllEntryPoint = GetProcAddress
(hLib,_T("DllUnregisterServer"))。
   4. 编译联接上述程序,即可得一个可执行文件。另需注意的是:应将ActiveX控件文件toweratl.ocx复制到Windows的system目录下。控件文件toweratl.ocx在微软出版的《Visual C++ 6.0程序员指南》所附光盘中可以找到。  
   5. 测试上述程序:运行《Visual C++ 6.0程序员指南》所附光盘中的game2程序,若使用RegActivex注册了toweratl.ocx控件,则该程序可以正常运行;若使用RegActivex注销了toweratl.ocx控件则game2不能运行。

更多技术文章请参看施昌权的个人网站: http://www.joyvc.cn

Windows中ActiveX控件注册的方法相关推荐

  1. 在VS2010中ActiveX控件注册方法,使用regsvr32命令

    上一篇小编展示了如何设置VS2010自带的ActiveX控件的容器测试程序,现在为大家演示一下如何注册ActiveX控件. 首先简单了解一下ActiveX控件的知识,ActiveX控件:简单来说,就是 ...

  2. ActiveX 控件注册的几种方法 VC++编写

    ActiveX 控件是一个动态链接库,是作为基于COM 服务器进行操作的,并且可以嵌入在包容器宿主应用程序中,ActiveX 控件的前身就是OLE 控件.由于ActiveX 控件与开发平台无关,因此, ...

  3. LabVIEW中ActiveX控件、ActiveX服务器和类型库注册

    LabVIEW中ActiveX控件.ActiveX服务器和类型库注册 如何在计算机上手动注册ActiveX控件(.ocx ).ActiveX服务器(.DLL和.EXE)以及类型库(.TLB )? 在L ...

  4. [转]ASP中ActiveX控件的内嵌及调用

    懂ASP(Active Server Pages)的人很多,但能用ASP自如地调用ActiveX控件的人却不多:如果不调用ActiveX控件,则可以说微软当初设计ASP的初衷根本没有达到.众所周知,A ...

  5. 当前安全设置禁止运行该页中activeX控件,该页无法正常显示

    运行services查看服务时,当前安全设置禁止运行该页中activeX控件,该页无法正常显示:打开一个project文件时,也显示 当前安全设置禁止运行该页中activeX控件,该页无法正常显示. ...

  6. matlab创建控件失败win7,Win7系统无法安装ActiveX控件的解决方法

    Win7系统无法安装ActiveX控件怎么办?ActiveX控件是网站常用的一款网页辅助工具,有时候我们可能需要安装它,但是却发现浏览器阻止了它安装,那么当你遇到这种情况该怎么办呢?下面小编就给大家带 ...

  7. C#中Windows Media Player控件使用实例|方法

    Windows Media Player控件Windows Media Player是一种媒体播放器,可以播放当前最流行的音频.视频文件和大多数混合型的多媒体文件.为了便于程序的开发,Visual S ...

  8. ActiveX控件缺失解决方法

    在对学生信息管理系统在另一台电脑上测试的时候,打开安装好的程序,弹出错误框"Component 'MSCOMCTL.OCX'or one of its dependencies not co ...

  9. Internet Explorer 已经阻止此站点以不安全的方式使用ActiveX控件(多种解决方法)

    一.电脑出现IE已经阻止此站点以不安全的方式使用ActiveX控件,因此该网页无法正确显示"的处理办法: 1.更改安全级别.. 如果你看不懂或者不会,我教你一个简单的. 打开IE.找到上方的 ...

  10. 编写ActiveX控件及其打包方法

    1.ActiveX控件概述 ActiveX控件是基于组件对象模型 (COM) 的可重用软件组件,广泛应用于桌面及Web应用中.在Windows操作系统以OCX结尾的文件,OCX代表"对象链接 ...

最新文章

  1. 框架复习笔记-Java-案例:牛客网讨论社区
  2. windows修改PowerShell(命令提示符)默认中文编码方式
  3. 知道创宇杨冀龙:2B产品经理的自我修养
  4. MariaDB:在Linux下修改编码
  5. 在android中怎么定义垂直,Android中的垂直(旋转)标签
  6. 2017 Multi-University Training Contest - Team 3:1004. Kanade's trio(01字典树)
  7. 跟KingDZ学HTML5之九 HTML5新的 Input 种类
  8. Spring Boot Actuator监控端点小结
  9. 答疑解惑:软件定义存储常见问题
  10. 群晖套件中心没有docker_群晖中通过docker安装huginn
  11. 【TcaplusDB知识库】读取数据示例(TDR表)
  12. Docker 错误 “port is already allocated” 解决方法
  13. Android性能优化系列之Bitmap图片优化
  14. 找不到 cl.exe 解决办法
  15. 一个爬虫练习游戏:黑板课爬虫闯关
  16. 简单了解LLVM IR基本语法
  17. Unfortunately XXX has stopped. 系统应用安装后导致其他应用
  18. 矿大计算机考研录取人,中国矿业大学2017年硕士研究生拟录取名单
  19. 微信小程序wepy框架编译生成dist目录
  20. java实现幻灯片页面切换动画,java实现多种幻灯片切换特效(经典,附源码)

热门文章

  1. 抖音短视频 产品需求文档
  2. Jlink按照用zadig升级用于openocd后,还原
  3. ubuntu下NS2+leach算法安装笔记(1)
  4. Unity UI事件管理系统设计
  5. 推荐几个浏览器插件帮助你查论文显示期刊等级(分区及影响因子),sci文章便捷下载
  6. UNetFusionNet
  7. 【detectron】FPN网络中RPN构建与相应的损失函数
  8. 手机修改php代码,修改Android设备信息,如修改手机型号为_php
  9. 阿里云CentOS服务器搭建静态网站(零基础)
  10. C语言根号下的书写方法