`
Riddick
  • 浏览: 632887 次
  • 性别: 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控件注册的几种方法使用Regsvr32.exe程序 对ActiveX控件进行注册

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

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

    ActiveX控件使用范例

    程式本身主要是几种常用ActiveX控件的联合使用。有些功能只是为了演示控件的用法,并不是必须的: &lt;P&gt;&lt;P&gt;toolbar:工具 &lt;BR&gt;treeview:树状视图: &lt;BR&gt;listview:列表视图 &lt;BR&gt;sattusbar:状态栏: 除此之外,该程序还是...

    JavaScript调用Activex控件的事件的实现方法

    [removed] 当acitveX控件 onXXXevent()事件被触发时,调用此方法。 如果一个半个的话还好说,几十个这样的函数,把我的页面占据的满满的。况且在VS2008中,“设置选定内容格式化”总是提示:“未能完成该操作”. ...

    控件应用VC6.0几种常用控件

    很简单的控件应用程序,初学者可以看下做程序是可以参考,

    excel 日期控件

    mscomct2.ocx是ActiveX插件公用管理模块,缺少它可能会造成部分软件不能正常运行,可能造成以下几种情况:如office窗体控件丢失,vb控件不可用,EXCEL日历控件没有找到等等,这些都是mscomct2.ocx控件包丢失所造成的...

    ocx调用Demo

    OCX是一个activex控件。是第3方开发的特有的控件。ocx文件只能通过调用才能使用,不能直接运行。 其他介绍:对象链接和嵌入用户控件(OCX)是一种可以由在微软的Windows系统中运行的应用软件创建使用的特殊用途的...

    BeauGauge Advanced Suite V2 仪表控件

    BeauGauge Advanced Suite是套图形仪表类ActiveX控件合集。它应用于仿真、科学、仪表、自动化、工业监控等领域,可方便地生成多种多样的虚拟仪表。软件内置多种图形组件,开发者只需通过鼠标进行简单操作,就可...

    VC PICTURE控件的使用

    编译运行就OK了,此种方法的好处就是可能针对多种图像格式. 方法4 vc picture控件通过CBitmap,HBITMAP,直接用OnPaint()绘制 首先在CTestDlg类中声明一个变量: CBitmap m_bmp; 然后我们在对话框中加入一个picture ...

    解决控件遮挡问题:关于有窗口元素和无窗口元素

    有窗口元素大概有以下几种: &lt;object&gt; 、ActiveX控件 、Plug-ins、DHTML Scriptlets、SELECT elements(即DropdownList的HTML表现)、IE5.01以前的IFRAMEs 无窗口元素包括: 无窗口的ActiveX控件、IE...

    Codejock Xtreme SuitePro ActiveX v13.2.0

    Codejock Xtreme Suite Pro是一专业级界面美化控件,提供一种专业的,富有现代感的外观,具备工具条、功能选单、对接、...包含几种流行的外观风格,例如微软OfficeXP、Office2003、OFFICE 2007和Visual Studio.NET。

    利用ActiveX控件InetCtls.Inet在ASP中实现新闻小偷

    这几天维护网站的时候要加很多的新闻或者其它文章,因为经常到一个网站上找文章,所以就想,能不能做个程序,指定一个网址,让ASP去搜索这个网址上所有的文章,进而把搜索回来的文章进行分析,把文章内容保存到...

    VB编程资源大全(控件 窗体1)

    可方便的开发出网络围棋对弈程序(18KB) 65,133.zip FormShaper,定制窗体形状的控件(18KB) 66,c4.zip 翻滚文字的 ActiveX 控件(6KB) 67,FreeActiveX.zip 取消控件注册的About对话框限制(45KB)...

    VB编程资源大全(控件 窗体2)

    可方便的开发出网络围棋对弈程序(18KB) 65,133.zip FormShaper,定制窗体形状的控件(18KB) 66,c4.zip 翻滚文字的 ActiveX 控件(6KB) 67,FreeActiveX.zip 取消控件注册的About对话框限制(45KB)...

    Visual C++ 编程资源大全(控件 窗体)

    AICOBUT.zip Animation Icon Button ActiveX是32bit OLE Control Module,用于制作图形立体按钮,带crack文件(105KB)&lt;END&gt;&lt;br&gt;108,asbubble01.zip 几个特殊的控件,可以在程序里弹出类似于气泡的对话框(37KB)...

    csXGraph OCX控件

    csXGraph OCX控件 用于绘画圆形统计图表,条形统计... &lt;br&gt; csXGraph OCX控件的几种统计图表如下: &lt;br&gt; &lt;img border="0" src=DownloadFilesgrid_activeximagescsxgraph_1.gif width="290" height="200"&gt; ...

    Visual C++2010开发权威指南(共三部分).part1.rar

    11.2 Activex控件测试与注册 455 11.2.1 Activex控件的测试 455 11.2.2 Activex控件的注册 457 11.3 MFC Activex控件向导 458 11.4 Activex控件属性开发 458 11.4.1 添加常用属性 459 11.4.2 添加自定义属性 460 ...

    如何在MATLAB中做出标签页的效果-tabpanel2.6.zip

    第三种方法是用matlab的一个函数:tabdlg,但是这个函数的使用帮助在新版本中已经没有了,因为以后的版本中要改变这个函数,不过还是有个列子是用这个函数创建标签页的,附件中的tabgui.m就是对应的程序,直接运行就...

Global site tag (gtag.js) - Google Analytics