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控件。方法如下:
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不能运行。
LPCTSTR pszDllName=GetCurPath()+_T("\\system32\\Slide.ocx");
HINSTANCE hLib = LoadLibrary(pszDllName); //strSysPath是组件的路径
if (hLib < (HINSTANCE)HINSTANCE_ERROR)
{
acutPrintf(_T("Slide.ocx"));
return;
} // get DllRegisterServer address
FARPROC lpDllEntryPoint;
lpDllEntryPoint = GetProcAddress(hLib, CW2A(_T("DllRegisterServer"))); // call function of register DllRegisterServer
if (lpDllEntryPoint != NULL)
{
if (FAILED((*lpDllEntryPoint)()))
{
acutPrintf(_T("调用DllRegisterServer失败!"));
FreeLibrary(hLib);
return;
}
}
else
{
acutPrintf(_T("调用DllRegisterServer失败!"));
return;
}
ActiveX控件进行注册相关推荐
- 对ActiveX控件进行注册
一. 使用Regsvr32.exe程序对ActiveX控件进行注册 对于未注册过的ActiveX控件可使用此软件对其进行注册,外来ActiveX控件要应用到自己的程序中也必须进行注册.该文件位 ...
- ActiveX控件的注册
用ActiveX控件可快速实现小型的组件重用.代码共享,从而提高编程效率,降低开发成本.但是ActiveX控件对于最终用户并不能直接使用,因为ActiveX控件必须先在Windows中注册.注册Act ...
- ActiveX控件的注册和反注册
一:用MFC生成的ActiveX控件,需要注册之后才能使用. 注意:注册与反注册都需要管理员权限,才能操作成功. 注册命令:regsvr32 "E:\Clock.ocx" 反注册命 ...
- 关于错误码0x80040154 MFC中ACtiveX控件没有注册的正确解决方案
今天遇到一个问题,以前VC++6.0做好的工程文件在另一台电脑上无法运行,并且报错, CoCreateInstance of OLE control {67397AA3-7FB1-11D0-B148- ...
- ActiveX 控件注册的几种方法 VC++编写
ActiveX 控件是一个动态链接库,是作为基于COM 服务器进行操作的,并且可以嵌入在包容器宿主应用程序中,ActiveX 控件的前身就是OLE 控件.由于ActiveX 控件与开发平台无关,因此, ...
- 自动注册activex控件
编写Delphi应用程序时,经常会遇到一些ActiveX控件[注:扩展名为OCX的控件或DLL的类型库],它们为应用程序的开发提供了简单的操作途径.然而,这些程序在发布的同时,面临ActiveX控件注 ...
- ActiveX控件注册
它是用来对未注册的"ActiveX控件"进行注册的,外来ActiveX控件要应用到自己的程序中也必须使用它注册,ActiveX技术是微软于1996年推出,得到了许多软件公司的支持, ...
- java 判断ocx是否存在_OCX控件的注册卸载,以及判断是否注册
方法一:在dos或Windows命令行下运行:regsvr32 ocxname.ocx 注册 示例: regsvr32 netshare.ocx //注册netshare.ocx控件 regs ...
- OCX控件的注册卸载,以及判断是否注册
方法一:在dos或Windows命令行下运行:regsvr32 ocxname.ocx 注册 示例: regsvr32 netshare.ocx //注册netshare.ocx控件 regs ...
- 修改注册表添加信任站点及启用Activex控件(转载)
// // 添加信息站点及将指定IP添加到本地Intranet中, // "*"=dword:00000002 表示受信任的站点区域 // "*&quo ...
最新文章
- DRBD数据同步部署-centos7
- @autowired注解_SpringBoot常用注解大全
- sqlite数据库的基本增删改查操作
- Java黑皮书课后题第6章:*6.4(反序显示一个整数)使用下面的方法体编写方法,反序显示一个整数…例如reverse(3456)返回6543,编写一个测试程序,提示用户输入一个整数,然后显示它的反序
- 亚马逊aws 服务器删除_AWS推出Apache Airflow全托管工作流MWAA
- MySQL高级 - 复制 - 原理
- Jedis 设置key的超时时间
- matplotlib scale 刻度
- Win-MASM64汇编语言-JMP指令
- android windows的一些item属性
- Linux时间子系统之五:低分辨率定时器的原理和实现
- 同时删除多个 Txt 文本文档空白行
- 电气工程及自动化 (独立本科) 自考
- STM32与jink连接烧录程序
- 关于职业发展:一篇不错的文章分享
- outlook qr码在哪里_原平防伪码溯源_橙程(北京)科技有限公司
- html5 dreamlive,DREAM LIVE 5th Tour Stargazer即将开演
- 纽约州立大学环境与林业学院计算机科学专业,2020年纽约州立大学环境科学与林业科学学院专业设置...
- Python len()函数讲解
- java中所有import意思,java 程序中用到的所有类都必须使用 import 语句。
热门文章
- ANSYS CFD网格划分笔记3
- 酒店管理系统web版/Java酒店管理系统
- 源码编辑器怎么编出游戏_编辑游戏
- ffmpeg转码html5,FFMPEG转码技术在HTML5视频系统中的研究与应用
- 字节跳动前端外包面试题
- 通过HTML5 JS实现CAD在线看图,CAD浏览器,HTML5画布和Javascript /浏览器开发的性能限制...
- JavaScript实现在线Cron表达式生成器、预览工具 -toolfk程序员在线工具网
- android平板安装win10,如何给平板电脑装win10系统?
- 航摄像片生成DSM(Pix4d)2021.5.21
- 电视助手 Android,无屏助手TV版|无屏助手电视版 V4.0.3 安卓版 下载_当下软件园_软件下载...