ActiveX控件注册的几种方法
----本文中的程序原为VC++所编写,老妖略改动一些,将程序用C++Builder编写。
-----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控件未注册所至,这时不妨使用上述命令一试。
二、使用安装程序
制作软件: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)。
----下面以C++ Builder 6.0编写的RegActivex程序为例,介绍怎样在程序中自动注册(注销)ActiveX控件。
在Form中添加两个Button,属性设置如:
Button1->Caption="注册ActiveX控件";
Button2->Caption="注销ActiveX控件";
当Button1时,将对指定控件进行注册;当点击Button2时,将解除指定控件的注册。
双击Button1,添加代码如下:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
HINSTANCE hLib=LoadLibrary("F:\c.ocx");//指定要注册的ocx文件的路径及文件名。
if (hLib==NULL)
{
MessageBox(Handle,"不能载入Dll文件!","失败ing..",MB_OK);
return;
}
//获取注册函数DllRegisterServer地址
FARPROC lpDllEntryPoint;
lpDllEntryPoint = GetProcAddress(hLib,"DllRegisterServer");
//调用注册函数DllRegisterServer
if(lpDllEntryPoint!=NULL)
{
if(FAILED((*lpDllEntryPoint)()))
{
MessageBox(Handle,"调用DllRegisterServer失败!","失败ing..",MB_OK);
FreeLibrary(hLib);
return;
};
MessageBox(Handle,"注册成功!","Reg",MB_OK);
}
else
MessageBox(Handle,"调用DllRegisterServer失败!","失败ing..",MB_OK);
}
双击Button2,添加代码如下:
void __fastcall TForm1::Button2Click(TObject *Sender)
{
HINSTANCE hLib=LoadLibrary("F:\c.ocx");
if (hLib==NULL)
{
MessageBox(Handle,"不能载入Dll文件!","失败ing..",MB_OK);
return;
}
//获取注册函数DllRegisterServer地址
FARPROC lpDllEntryPoint;
lpDllEntryPoint = GetProcAddress(hLib,"DllUnregisterServer");//注意这里是DllUnregisterServer,老妖著。
//调用注册函数DllRegisterServer
if(lpDllEntryPoint!=NULL)
{
if(((*lpDllEntryPoint)()))
{
MessageBox(Handle,"调用DllUnRegisterServer失败!","失败ing..",MB_OK);
FreeLibrary(hLib);
return;
};
MessageBox(Handle,"注销成功!","Unreg",MB_OK);
}
else
MessageBox(Handle,"调用DllUnRegisterServer失败!!!","结果",MB_OK);
}
编译联接上述程序,即可得一个可执行文件。另需注意的是:应将ActiveX控件文件复制到Windows的system目录下。
读者可自行找一个ocx文件来注册测试一下的说。
suziwen (资深程序员) 2010-03-20
打CAB包等
ACTIVEX控件与安全
网页中调用ocx,并部署在服务器使用 ocx注册;
调用ocx的网页在本地打开可以成功调用ocx;
把网页部署在服务器上,通过客户端打开,不能成功调用ocx,报“对象不能使用属性或方法”,
个人猜测:由于ocx没有数字签名,故无法通过IE验证,
解决方法:在客户端设置服务器网址为可信任站点,同时将可信任站点的安全级别设置为最低,打开网页,成功调用ocx
然后有时候还需要对IE上的Internet安全里面的四个选项的ACTIVEX相关的选项选为启动即可。
分享到:
相关推荐
ActiveX控件注册的几种方法使用Regsvr32.exe程序 对ActiveX控件进行注册
ActiveX控件ActiveX控件
自己研究总结的方法,包括所缺的控件,一般不会缺少的
VC程序内部注册ActiveX 控件
Active Audio Record ActiveX控件 可以直接录制声音为MP3、WAV、wma 、ogg、au、aiff 和vox格式的音频文件。您可以通过设置内码参量完全控制音像文件的质量。 <br> Active Audio Record ActiveX控件 支持...
MFC中 编程实现ActiveX控件的注册的源代码,绝对经典! 希望对你有所帮助!
Active TTS ActiveX控件 可以把正在处理中的文件转换成MP3, wma 或wav格式,使用艺术文本状态转换成(TTS) 系统。它直接转换为Mp3或wma格式,不创建其它临时文件,这是Active TTS独特的特点。您可以通过设置内码...
VB使用API动态注册ActiveX控件。
这是使用VB 设计的注册ActiveX控件软件, 包含VB 调用系统命令的使用, 并使用了VB获取系统路径, 调用API函数, 复制文件等高级功能。 本资源还包含了一些VB常用的ActiveX控件, 如Flash8.ocx, comctl32.ocx, mci32.ocx,...
Delphi免注册使用ActiveX控件FlexGrid.ocx
ocx控件 activeX控件 解决电脑运行程序提示缺少控件问题内含注册方式
activex控件自动注册程序的VC源代码,程序可自动调用控件内的函数,对控件进行注册、反注册。
Visual Studio ActiveX控件集合,建议全部注册,注册方法见压缩包内说明
VB6.0动态加载ActiveX控件漫谈 深圳 罗汉军 罗德昌 熟悉VB的朋友对使用ActiveX控件一定不会陌生,众多控件极大地方便了编程, 但唯一的缺陷是不能动态加载控件,必须在设计时通过引用,将控件放置在窗体上。 VB6.0...
VB之精彩编程-VB6.0动态加载ActiveX控件漫谈
他能使程序开发者和普通用户管理/安装/卸载机器上的ActiveX控件变的轻而易举,简单友好的使用界面让你直观地管理电脑上已经安装/注册的所有ActiveX控件,你可以轻松注册/安装新控件、卸载不用的控件、对控件进行...
该注册工具对于一些不会注册ACTIVEX控件的人来说是一个非常方便的工具,直接选择要注册的控件,确定即可。
海康视屏ocx控件,最新版本,可通过web访问,也可能过集成到软件中使用