`
Riddick
  • 浏览: 640382 次
  • 性别: Icon_minigender_1
  • 来自: 武汉
社区版块
存档分类
最新评论

注册ActiveX控件的几种方法

阅读更多

使用ActiveX控件可快速实现小型的组件重用、代码共享,从而提高编程效率,降低开发成本。但是ActiveX控件对于最终用户并不能直接使用,因为ActiveX控件必须先在Windows中注册。注册ActiveX控件一般来说有六种途径,它们有各自的优点,运用范围也不同。

  Regsvr32.exe注册

 
  Regsvr32.exe位于Windows目录的system子目录下。点击Windows的“开始→运行”菜单,在对话框中输入以下命令:

  regsvr32 netshare.ocx &&注册netshare.ocx控件

  regsvr32 /u netshare.ocx &&解除netshare.ocx控件的注册

  如果netshare.ocx文件不在system目录时,还必须在文件名前加上完整的路径。除了regsvr32应用程序之外,Microsoft在它的Web站点上还提供了一个称为regclean.exe的程序,可以检查注册表并去掉丢失的组件在注册表中的条目。regclean.exe除了可以删除“悬挂”的条目,它还提供一个“undo”文件帮助恢复错误的删除。

  卧龙传说提醒:用regsvr32.exe注册ActiveX控件虽然简单,但需要用户手工进行注册,在不用时还需手工解除注册。

  VFP环境注册

  在我们进行程序设计时,VFP本身提供一个注册ActiveX控件的方法。

  进入VFP环境,选择“工具→选项”菜单,点击“控件”页,选中“ActiveX控件”单选按钮,在列表框里显示所有已经注册的ActiveX控件,这时,点击右边的“添加”按钮,选择需要注册的ActiveX控件文件,“确定”后完成注册。也可以在表单设计器的表单控件工具栏里拖动“OLE”按钮到表单,在弹出的选择框里选中“插入控件”单选钮,同样点击右边的“添加控件”按钮,来完成新控件的注册。

  卧龙传说提醒:本方法仅适合程序员在设计程序过程中手工进行,对用户而言,并没有实现在本地机上自动注册。

  安装程序注册

  大型应用软件一般都有一个安装程序,在安装程序中解决ActiveX控件的注册是较为理想的一种方案。

  在用户执行安装程序时,这些ActiveX控件将自动在用户机器上安装并注册。

  VFP7.0光盘所带的InstallShield是目前较为流行的制作安装程序的工具,使用它可以制作出专业级的Setup安装程序,还可以注册应用程序使用到的ActiveX控件。而且,在以后使用控制面板的“添加/删除程序”卸载该软件时,安装程序会自动注销掉以前注册的ActiveX控件。

  加入代码注册

  首先,定义一个注册控件的函数:

  Function MyRegsvr ( lpcRegFilename, lplIsreg )

  If File(lpcRegFilename)

  lpcRegFilename = iif(llisreg, lpcRegFilename, [ /u ] + lpcRegFilename)

  Run /n regsvr32 &&lpcRegFilename

  Endif

  Return

  Endfunc

  然后就可以通过以下语句来调用该函数,并完成ActiveX控件的注册了(卧龙传说提醒:一定要注意控件文件的路径哦)。

  = MyRegsvr( "netshare.ocx", .T.) &&注册netshare.ocx控件

  = MyRegsvr( "netshare.ocx", .F.) &&解除netshare.ocx控件的注册

  注册函数注册

  上面提到运行regsvr32.exe应用程序将弹出注册是否成功的对话框,注意看内容“DllRegisterServer in netshare.ocx succeeded”或“UnDllregisterServer...”,其实,通常每个可用的ActiveX控件都有DllRegisterServer、UnDllregisterServer这两个自注册函数包含在其中,我们可以用定义API函数的方法(Declare <函数名> in <文件名> ... )来定义它,然后直接使用该函数来进行注册和反注册。

  同样,我们先自定义一个注册函数(卧龙传说提醒:请注意DllRegisterServer、UnDllregisterServer的大小写):

  Function DllRegister (lpLibFileName,isReg)

  isReg = iif(type("isReg")="U", .T., isReg)

  lpProcName = iif(isReg, "DllRegisterServer", "DllUnregisterServer" )

  Declare INTEGER (lpProcName) in (lpLibFileName)

  return &&lpProcName.()

  Endfunc

  然后,就可以通过该函数来完成ActiveX控件的注册了。

  = DllRegister( "netshare.ocx", .T.) &&注册,返回0表示成功

  = DllRegister( "netshare.ocx", .F.) &&注销,返回0表示成功

  Clear Dlls

  试试,是不是没有了弹出框的烦恼!

  卧龙传说提醒:该方法没有对ActiveX控件文件的验证,假如该控件没有有效的DllRegisterServer功能(即不具有自注册功能),也就找不到以上的两个API函数,照样会有错误信息弹出。

  API函数注册

  此方法的设计思路是:先将ActiveX控件载入内存,然后验证其有效性,最后直接在内存地址中执行其注册函数(DllRegisterServer、UnDllregisterServer)。其编程方法是:

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

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

  3、使用CallWindowProc函数执行已载入内存的ActiveX控件注册函数(DllRegisterServer、UnDllregisterServer)。

  上面所述的ActiveX控件注册方法各有特点。经实际使用,效果良好。您可根据实际情况灵活选用。


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/peter824/archive/2007/07/16/1693678.aspx

分享到:
评论

相关推荐

    ActiveX控件注册的几种方法

    ### ActiveX控件注册的几种方法 在计算机编程领域中,ActiveX控件是一种重要的组件技术,它基于Microsoft的COM(Component Object Model)规范。ActiveX控件可以在多种应用程序之间共享,实现代码重用和功能扩展。...

    Visual Studio2015打开界面文件时报错:“未在此计算机上注册activex控件.rar

    当出现“未在此计算机上注册activex控件”的错误,可能有以下几个原因: 1. **控件未注册**:这是最常见的原因,系统中缺少对应控件的注册信息。解决方法通常是找到该控件的安装程序或者注册文件(.ocx或.dll),...

    Activex\ActiveX控件注册的几种方法(源码级的,值得看看)

    ### ActiveX控件注册的几种方法详解 #### 引言 ActiveX控件,作为COM技术的产物,是一种跨平台的动态链接库(DLL),它允许开发者创建可以在多种编程环境中复用的组件。这种控件的前身是OLE控件,但与之不同的是,...

    activex控件vc++编程

    总的来说,ActiveX控件与VC++的结合为Windows应用程序开发提供了一种强大而灵活的方法。通过学习和实践,开发者可以创建出具有丰富功能和定制界面的控件,提升应用程序的用户体验。同时,理解并掌握ActiveX控件的...

    一个简单的ActiveX控件——详尽教程

    ActiveX控件是一种可以在多个应用程序之间共享的软件组件,它们通常用于扩展Web浏览器的功能,提供丰富的交互式用户界面元素。ActiveX控件基于Microsoft的OLE(对象链接和嵌入)技术,允许在多种环境下运行复杂的...

    ActiveX控件的注册

    标题"ActiveX控件的注册"所涉及的关键知识点主要包括以下几个方面: 1. **ActiveX控件**:ActiveX控件是一种二进制模块,可以包含用户界面元素或提供特定功能。它们通过COM接口与宿主应用程序通信,使得开发者能够...

    整个ActiveX控件源码

    ActiveX控件是微软开发的一种技术,用于在Internet Explorer浏览器和其他支持ActiveX的环境中嵌入功能丰富的应用程序或组件。这些控件通常是用Microsoft Visual C++、Visual Basic等编程语言编写的,可以提供交互式...

    VB6.0动态加载ActiveX控件漫谈...

    在VB6.0中,动态加载ActiveX控件主要通过以下几种方式实现: 1. **使用 `CreateObject` 和 `GetObject` 方法**: - `CreateObject` 方法用于创建新的COM对象实例。 - 示例代码: ```vb Dim xlApp As Excel....

    Activex\C#开发ActiveX控件,.NET开发OCX控件案例

    ActiveX控件是一种软件组件或对象,它能够被嵌入到Web页面或其他应用程序中,以增强功能性和交互性。这些控件允许在浏览器中运行本地代码,从而实现更复杂的操作,如文件系统访问、多媒体处理等。它们最初被称为OLE...

    ACTIVEX控件

    开发一个ActiveX控件通常涉及以下几个步骤: 1. **定义接口**: 在C++中,通过定义COM(Component Object Model)接口来确定控件对外提供的方法和属性。这些接口通常是IDispatch或IUnknown的子类。 2. **实现类**: ...

    编程创建ActiveX控件源代码

    在IT领域,ActiveX控件是一种基于微软技术的组件,用于在Windows应用程序中提供交互式功能,特别是网页浏览器。ActiveX控件可以是各种形式,如按钮、文本框或者更复杂的用户界面元素。它们通常由程序员用Visual ...

    ActiveX控件下载 官方版

    ActiveX控件是微软开发的一种技术,主要用于在Internet Explorer浏览器中增强网页的交互性和功能。它是一种小型、可重用的软件组件,基于COM(Component Object Model)模型,允许开发者集成各种功能,如媒体播放、...

    ActiveX控件的编写和使用

    在创建 ActiveX 控件时,主要要完成以下几方面的内容:创建控件的外壳、编辑控件名称、选择控件类型、编辑控件的一些风格等等。在编译项目时编译器会询问项目中包含几个控件、以及控件是否具有运行时间许可证。运行...

    Delphi中ActiveX控件的开发

    在Delphi中,ActiveX控件的开发是实现跨平台交互和组件重用的一种重要方式。ActiveX是微软提出的技术,它允许开发人员创建可以在不同应用程序之间共享的组件,这些组件可以通过COM(Component Object Model)接口...

    开发ActiveX控件OleEdit

    在IT行业中,ActiveX控件是一种在Windows平台上广泛使用的组件技术,它允许开发者创建可重用的、交互式的用户界面元素。MFC(Microsoft Foundation Classes)是微软提供的一套C++类库,用于简化Windows应用程序的...

    C# 开发的ActiveX控件

    总的来说,C#开发ActiveX控件涉及到的知识点包括COM编程、接口设计、属性和方法的实现、以及注册和部署COM组件。这是一个将现代编程语言与传统技术融合的过程,对于理解跨平台和跨语言交互具有重要意义。

    基于OpenGL的ActiveX控件的实现

    本文详细介绍了一种基于OpenGL的ActiveX控件的开发方法,该方法不仅可以应用于多种平台,而且还能方便地集成到其他应用程序中,如PowerPoint 2000。通过将OpenGL的图形渲染能力和ActiveX控件的可复用性相结合,可以...

    vs2008 ActiveX控件__及__.rar

    开发ActiveX控件时,应考虑以下几点: - **安全性**:由于ActiveX控件可以直接执行代码,因此确保其安全性和防止恶意利用至关重要。 - **兼容性**:测试控件在不同环境下的表现,确保它在不同版本的Windows和...

Global site tag (gtag.js) - Google Analytics