ActiveX控件是一个动态链接库,是作为基于COM服务器进行操作的,并且可以嵌入在包容器宿主应用程序中,
ActiveX控件的前身就是OLE控件。由于ActiveX控件与开发平台无关,因此,在一种编程语言上开发的ActiveX控件可
以无须作任何修改,即可在另一种编程语言中使用,其效果如同使用Windows通用控件一样。如:在VC++中开
发的ActiveX控件,不作任何修改即可应用于VB中。由此可见,通过使用ActiveX控件即可实现快速小型的组件重用
、代码共享,从而提高编程效率。 ----从Internet下载的ActiveX控件,或从其他途径得到的
ActiveX控件,用户应该怎样做才能正确使用呢?一般来说,一个外来ActiveX控件要在Windows中被正确使用,首先
必须将控件文件(*.OCX)复制到硬盘中,然后将其在Windows中注册,未在Windows中注册过的ActiveX控件是不能
使用的。注册ActiveX控件一般来说有三种途径,适用范围不同,各有各的优点,下面分别讨论。
一、使用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控件。方
法如下:
启动InstallShield,使用ProjectWizard建立一个新的项目;
新建一个“FileGroup”,将需要注册的ActiveX控件文件放入
此“FileGroup”中;
将上述“FileGroup”的“Self-Registered”属性设置成“Yes”。
----上述步骤仅为制作Setup中设置自动注册ActiveX控件几
步,至于使用InstallShield怎样制作一个完整的Setup不在
本文讨论范围之中,请读者自己参看有关书籍。
三、在应用程序中加入注册代码
----对于小型程序不宜采取第二种方法,较好的方法是
在程序中嵌入注册代码,实现应用程序自注册。其编程
方法是:
使用WindowsAPI函数LoadLibrary载入ActiveX控件;
使用GetProcAddress函数获取ActiveX控件中注册函数
DllRegisterServer(注销函数为DllUnregisterServer)指针;
调用注册函数DllRegisterServer(或注销函数
DllUnregisterServer)。
----下面以VC++6.0编写的RegActivex程序为例,介绍怎样
在程序中自动注册(注销)ActiveX控件。RegActivex的主体
框架由VC++6.0的AppWizard自动产生,在其基础上增加两
个菜单项:“注册ActiveX控件”、“注销ActiveX控件”。当选
择“注册ActiveX控件”菜单时,将对控件toweratl.ocx(一个
汉诺游戏)进行注册;当选择“注销ActiveX控件”菜单时
,将解除控件toweratl.ocx的注册。
使用VC++6.0建立一个单文档的应用程序RegActivex,其
他项目接受默认设置;
给应用程序增加两个菜单项:“注册ActiveX控件”、“注销
ActiveX控件”,步骤如下:
单击VC++6.0左边窗口的“ResoureView”,双击MENU项目下
的IDR_MAINFRAME以打开菜单编辑器;
在菜单编辑器中,加入一个主菜单“注册”,在“注册”
主菜单下加入两个菜单项:“注册ActiveX控件”、“注销
ActiveX控件”;
给新建的菜单项“注册ActiveX控件”和“注销ActiveX控件”
增加响应函数:
在资源编辑器中,双击MENU中的IDR_MAINFRAME打开菜单编辑
器,单击“注册ActiveX控件”,按Ctrl+W打开MFCClassWizard;
双击Messages框中的COMMAND,给“注册ActiveX控件”菜单项增
加响应函数OnRegisterReg(),单击右边“Edit”按钮,给
OnRegisterReg()函数增加如下代码:
voidCMainFrame::OnRegisterReg()
{
file://ActiveX控件的路径及文件名
LPCTSTRpszDllName=“toweratl.ocx";
//装载ActiveX控件
HINSTANCEhLib=LoadLibrary(pszDllName);
if(hLib<(hinstance)hinstance_error)
{
MessageBox(“不能载入Dll文件!",
“结果",MB_OK);
return;
}
//获取注册函数DllRegisterServer地址
FARPROClpDllEntryPoint;
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"))。
编译联接上述程序,即可得一个可执行文件。另需注意
的是:应将ActiveX控件文件toweratl.ocx复制到Windows的system
目录下。控件文件toweratl.ocx在微软出版的《VisualC++
6.0程序员指南》所附光盘中可以找到。
测试上述程序:运行《VisualC++6.0程序员指南》所附
光盘中的game2程序,若使用RegActivex注册了toweratl.ocx控件
,则该程序可以正常运行;若使用RegActivex注销了
toweratl.ocx控件则game2不能运行。

【VS开发】windows注册ActiveX控件的更多相关文章

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

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

  2. 开发ActiveX控件调用另一个ActiveX系列1——开发一个MFC ActiveX控件

    ActiveX开发的教程有很多,我也从中受益匪浅,例如以下这几篇: 基本教程:http://www.cnblogs.com/guenli/articles/1629915.html 注意事项:http ...

  3. Regsvr32注册ActiveX控件

    命令:Regsvr32 XX.dll 注册ActiveX控件 Regsvr32命令参数:/u 卸载ActiveX控件/s 注册成功后不显示操作成功信息框/c 控制台输出/I 调用DllInstall安 ...

  4. VS2010 开发 VB6.0 activeX控件 dll

    项目源码 https://download.csdn.net/download/csdn_z_s/10427764 开发环境 操作系统: win7 64位 旗舰版 Java语言开发环境:  Eclip ...

  5. 关于使用regsvr32命令注册ActiveX控件失败的解决办法

    昨天小编也遇到这样问题,步骤一切都对,没有错误,但是每次在命令行下输入的时候,都会弹出一个对话框: 最后我发现是存放ActiveX控件的路径中带有中文文件名字所导致,所以导致的错误,我们将所在路径下的 ...

  6. 注册ActiveX控件

    简单了解一下ActiveX控件的知识,ActiveX控件:简单来说,就是利用封装性的原理,把一些功能封装起来,我们可以再其他程序中使用,进而达到方便的目的.但是要注意ActiveX控件必须要注册后才可 ...

  7. [转]在Win7 64位注册ActiveX控件

    原文作者: K_H_H 原文地址: http://blog.sina.com.cn/s/blog_56b96c5a0100ztc7.html  首先必须以管理员身份运行cmd.exe,即在cmd.ex ...

  8. 在Win7 64位注册ActiveX控件

    首先必须以管理员身份运行cmd.exe,即在cmd.exe右键选择以管理员身份运行.    目前共有两个存在网络盘的文件需要注册,一个dll,一个ocx.    开始时将两个文件都拷贝到c:\wind ...

  9. C#.NET开发ActiveX控件

    最近刚开发了个activeX控件,下面是我的一些简单总结. 1. 先创建一个类库项目,在AssemblyInfo.cs设置 [assembly: ComVisible(true)] ,意思是使此程序集 ...

随机推荐

  1. C# DataGridView 更改类型 重绘

    DataGridView   更改类型 需要用到重绘 DataGridViewTextBoxColumn aa01 = new DataGridViewTextBoxColumn(); aa00.Da ...

  2. Visual Studio下__cplusplus宏为199711L的问题

    Visual Studio下__cplusplus宏为199711L的问题 / Zc:__ cplusplus(启用更新的__cplusplus宏) 该/ ZC:__ CPLUSPLUS编译器选项使_ ...

  3. XML的树结构与语法规则

    ㈠概念 什么是 XML? ⑴XML 指可扩展标记语言(EXtensible Markup Language) ⑵XML 是一种标记语言,很类似 HTML ⑶XML 的设计宗旨是传输数据,而非显示数据 ...

  4. C# 选择文件夹 选择文件

    选择文件 //选择文件 OpenFileDialog dialog = new OpenFileDialog(); dialog.Multiselect = true;//该值确定是否可以选择多个文件 ...

  5. Confluence 6 文件

    通过将你的文件上传到 Confluence 能够让你在一个统一的地方分享你项目小组的 PDF 文件,Office 文档,图片以及更多的内容. 自动版本,即时预览,权限控制和全文搜索意味着在网络驱动器上 ...

  6. Luogu P4707 重返现世 (拓展Min-Max容斥、DP)

    题目链接 https://www.luogu.org/problem/P4707 题解 最近被神仙题八连爆了-- 首先Min-Max容斥肯定都能想到,问题是这题要用一个扩展版的--Kth Min-Ma ...

  7. Java并发编程的艺术笔记(八)——线程池

    一.线程池的主要处理流程 ThreadPoolExecutor执行execute方法分下面4种情况. 1)如果当前运行的线程少于corePoolSize,则创建新线程来执行任务(注意,执行这一步需要获 ...

  8. C++入门经典-例5.3例5.4-输出int指针运算后的地址值

    1:代码如下: // 5.3.cpp : 定义控制台应用程序的入口点. // #include "stdafx.h" #include <iostream> using ...

  9. (转)php中字符过滤

    有时候为了安全起见,我们需要对用户输入的字符串进行转义       文章中有不正确的或者说辞不清的地方,麻烦大家指出了--- 与PHP字符串转义相关的配置和函数如下: 1.magic_quotes_r ...

  10. java 开发工具包 jdk 64位 jdk-8u221-windows-x64.exe 迅雷下载

    迅雷下载链接(迅雷新建任务,复制链接进去): https://download.oracle.com/otn/java/jdk/8u221-b11/230deb18db3e4014bb8e3e8324 ...