副标题#e#
本文中的措施原为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不在本文接头范畴之中,请读者本身参看有关书籍。
#p#副标题#e#
三、在应用措施中插手注册代码
—-对付小型措施不宜采纳第二种要领,较好的要领是在措施中嵌入注册代码,实现应用措施自注册。其编程要领是:
利用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文件来注册测试一下的说。