什么是 ActiveX控件
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了什么是 ActiveX控件相关的知识,希望对你有一定的参考价值。
ActiveX是Microsoft对于一系列策略性面向对象程序技术和工具的称呼,其中主要的技术是组件对象模型(COM)。在有目录和其它支持的网络中,COM变成了分布式COM(DCOM)。在创建包括ActiveX程序时,主要的工作就是组件,一个可以自足的在ActiveX网络(现在的网络主要包括Windows和Mac)中任意运行的程序。这个组件就是ActiveX近控件。ActiveX是Microsoft为抗衡Sun Microsystems的JAVA技术而提出的,此控件的功能和JAVA applet功能类似。如果您使用的是Windows操作系统,您或许会注意到一些以OCX结尾的文件。OCX代表“对象链接与嵌入控件”(OLE),这个技术是Microsoft提出的程序技术,用于处理桌面文件的混合使用。现在COM的概念已经取代OLE的一部分,Microsoft也使用ActiveX控件代表组件对象。
组件的一大优点就是可以被大多数应用程序再使用(这些应用程序称为组件容器)。一个COM组件(ActiveX控件)可由不同语言的开发工具开发,包括C++和Visual Basic或PowerBuilder,甚至一些技术性语言如VBScript。
目前,ActiveX控件在Windows 95/NT和Macintosh中运行,Microsoft还准备支持UNIX的ActiveX控件。
ActiveX组件包括如下几类:
1.自动化服务器:可以由其他应用程序编程驱动的组件。自动化服务器至少包括一
个,也许是多个供其他应用程序生成和连接的基于IDispatch的接口。自动化服务器
可以含有也可以没有用户界面(UI),这取决于服务器的特性和功能。
2.自动化控制器:那些使用和操纵自动化服务器的应用程序。
3.控件:ActiveX控件等价于以前的OLE控件或OCX。一个典型的控件包括设计时和运
行时的用户界面,唯一的IDispatch接口定义控件的方法和属性,唯一的
IConnectionPoint接口用于控件可引发的事件。
4.文档:ActiveX文档,即以前所说的DocObect,表示一种不仅仅是简单控件或自动
化服务器的对象。ActiveX文档在结构上是对OLE链接和模型的扩展,并对其所在的
容器具有更多控制权。一个最显著的变化是菜单的显示方式。一个典型的OLE文档的
菜单会与容器菜单合并成一个新的集合,而ActiveX文档将替换整个菜单系统,只表
现出文档的特性而不是文档与容器共同的特性。
5.容器:ActiveX容器是一个可以作为自动化服务器、控件和文档宿主的应用程序 参考技术A 一些插件,可以帮助网页中某些程序的打开.
但一般最好是不要去按网页的提示去做这些操作,小心病毒总是好的.如果是银行的网页上提示了的,你可以按照银行给你的提示去做,最好还是在银行去问一下比较好.
自从Microsoft公司于1996年推出ActiveX技术以来,ActiveX技术已得到了许多软件公司的支持和响应,并纷纷在其产品中融入ActiveX技术。而作为ActiveX技术之一的ActiveX控件也得到了迅猛的发展,不但各大软件公司推出了不少ActiveX 控件,ActiveX控件更是得到一般开发者的喜爱。那么,什么是ActiveX控件呢?ActiveX控件是一个动态链接库,是作为基于COM服务器进行操作的,并且可以嵌入在包容器宿主应用程序中,ActiveX控件的前身就是OLE控件。由于ActiveX控件与开发平台无关,因此,在一种编程语言上开发的ActiveX控件可以无须任何修改,即可在另一种编程语言中使用,其效果如同使用Windows通用控件一样。如:在VC++中开发的ActiveX控件,不作任何修改即可应用于VB中。由此可见,通过使用ActiveX控件即可实现快速小型的组件重用、实现代码共享,从而提高编程效率。从上面亦可看出为何ActiveX控件如此广泛地受到开发者的欢迎。
因为ActiveX控件的可重用性,加上Internet的普及,ActiveX控件得到了极大的发展,目前,从Internet上可以得到相当多的ActiveX控件,而且品种繁多,所完成的任务几乎无所不包。对普通开发者来说,只要有耐心,都能从Internet上找到符合自己要求的ActiveX控件。
从Internet下载的ActiveX控件,或从其他途径得到的ActiveX控件,用户应该怎样做才能正确使用ActiveX控件或将其应用于自己的程序中呢?一般来说,一个外来ActiveX控件要在Windows中被正确使用,首先必须将控件文件(*.OCX)复制到硬盘中,然后将其在Windows中注册,未在Windows中注册过的ActiveX控件是不能使用的。注册ActiveX控件一般来说有三种途径:
1. 使用Regsvr32.exe程序对ActiveX控件进行注册;
2. 使用安装程序制作软件:InstallShield;
3. 在应用程序中加入注册代码。
上述方法适用范围不同,各有各的优点,下面分别讨论。
一、 使用Regsvr32.exe程序对ActiveX控件进行注册
对于未注册过的ActiveX控件可使用此软件对其进行注册,外来ActiveX控件要应用到自己的程序中也必须进行注册。该文件位于Windows目录的system子目录下。使用方法如下:点击“开始”→“运行”;在运行对话框中输入以下命令:
regsvr32 $#@60; 文件名 $#@62; 注册一个ActiveX控件
regsvr32 /u $#@60; 文件名 $#@62; 解除某ActiveX控件的注册
我们使用一些带A veX控件的应用程序时,有时会出现不能运行的情况,这有可能是其自带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 $#@60; (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不能运行。
参考资料:http://www.itgoogle.com/web/show_612.html
参考技术B 插件 参考技术C ActiveX是Microsoft对于一系列策略性面向对象程序技术和工具的称呼,其中主要的技术是组件对象模型(COM)。在有目录和其它支持的网络中,COM变成了分布式COM(DCOM)。在创建包括ActiveX程序时,主要的工作就是组件,一个可以自足的在ActiveX网络(现在的网络主要包括Windows和Mac)中任意运行的程序。这个组件就是ActiveX近控件。ActiveX是Microsoft为抗衡Sun Microsystems的JAVA技术而提出的,此控件的功能和JAVA applet功能类似。如果您使用的是Windows操作系统,您或许会注意到一些以OCX结尾的文件。OCX代表“对象链接与嵌入控件”(OLE),这个技术是Microsoft提出的程序技术,用于处理桌面文件的混合使用。现在COM的概念已经取代OLE的一部分,Microsoft也使用ActiveX控件代表组件对象。
组件的一大优点就是可以被大多数应用程序再使用(这些应用程序称为组件容器)。一个COM组件(ActiveX控件)可由不同语言的开发工具开发,包括C++和Visual Basic或PowerBuilder,甚至一些技术性语言如VBScript。
目前,ActiveX控件在Windows 95/NT和Macintosh中运行,Microsoft还准备支持UNIX的ActiveX控件。
ActiveX组件包括如下几类:
1.自动化服务器:可以由其他应用程序编程驱动的组件。自动化服务器至少包括一
个,也许是多个供其他应用程序生成和连接的基于IDispatch的接口。自动化服务器
可以含有也可以没有用户界面(UI),这取决于服务器的特性和功能。
2.自动化控制器:那些使用和操纵自动化服务器的应用程序。
3.控件:ActiveX控件等价于以前的OLE控件或OCX。一个典型的控件包括设计时和运
行时的用户界面,唯一的IDispatch接口定义控件的方法和属性,唯一的
IConnectionPoint接口用于控件可引发的事件。
4.文档:ActiveX文档,即以前所说的DocObect,表示一种不仅仅是简单控件或自动
化服务器的对象。ActiveX文档在结构上是对OLE链接和模型的扩展,并对其所在的
容器具有更多控制权。一个最显著的变化是菜单的显示方式。一个典型的OLE文档的
菜单会与容器菜单合并成一个新的集合,而ActiveX文档将替换整个菜单系统,只表
现出文档的特性而不是文档与容器共同的特性。
5.容器:ActiveX容器是一个可以作为自动化服务器、控件和文档宿主的应用程序 参考技术D ActiveX
控件和
Web
浏览器加载项是
Internet
上广泛应用的小程序。它们可以通过提供工具栏、股票行情收报器、视频、动画内容等来增加浏览的乐趣。但是,这些程序可能出问题或者向您提供不需要的内容。在某些情况下,这些程序可被用来以您不允许的方式从计算机收集信息、破坏计算机上的信息、在未经同意的情况下在计算机上安装软件或者允许他人远程控制您的计算机。由于存在这些风险,所以只有在完全信任提供
ActiveX
控件或加载项的发行商和网站时才能进行安装。 第5个回答 2020-04-27 ActiveX是Microsoft对于一系列策略性面向对象程序技术和工具的称呼,其中主要的技术是组件对象模型(COM)。在有目录和其它支持的网络中,COM变成了分布式COM(DCOM)。在创建包括ActiveX程序时,主要的工作就是组件,一个可以自足的在ActiveX网络(现在的网络主要包括Windows和Mac)中任意运行的程序。这个组件就是ActiveX近控件。ActiveX是Microsoft为抗衡Sun
Microsystems的JAVA技术而提出的,此控件的功能和JAVA
applet功能类似。
如果您使用的是Windows操作系统,您或许会注意到一些以OCX结尾的文件。OCX代表“对象链接与嵌入控件”(OLE),这个技术是Microsoft提出的程序技术,用于处理桌面文件的混合使用。现在COM的概念已经取代OLE的一部分,Microsoft也使用ActiveX控件代表组件对象。
组件的一大优点就是可以被大多数应用程序再使用(这些应用程序称为组件容器)。一个COM组件(ActiveX控件)可由不同语言的开发工具开发,包括C++和Visual
Basic或PowerBuilder,甚至一些技术性语言如VBScript。
目前,ActiveX控件在Windows
95/NT和Macintosh中运行,Microsoft还准备支持UNIX的ActiveX控件。
Excel 2010 中的“表单控件”和“ActiveX 控件”有啥区别?
【中文标题】Excel 2010 中的“表单控件”和“ActiveX 控件”有啥区别?【英文标题】:What is the difference between "Form Controls" and "ActiveX Control" in Excel 2010?Excel 2010 中的“表单控件”和“ActiveX 控件”有什么区别? 【发布时间】:2013-03-05 12:17:01 【问题描述】:使用 Microsoft Excel 2010,我注意到有两种可以插入到文档中的控件:Form Controls 和 ActiveX Controls。
它们有什么区别?
【问题讨论】:
表单控件被嵌入到 Excel 本身中。 ActiveX 控件从单独的 DLL 加载。您可以添加额外的 ActiveX 控件,而不是表单控件。 感谢@HansPassant!据我了解,我应该从表单控件开始,而无需依赖 ActiveX 控件即可完成工作。 在这里查看我的详细答案:Overview of differences between Form Controls and ActiveX Controls in Excel 【参考方案1】:Google is full of information on this。正如 Hans Passant 所说,表单控件内置于 Excel 中,而 ActiveX 控件是单独加载的。
通常您会使用Forms
控件,它们更简单。 ActiveX
控件允许更灵活的设计,并且应该在使用基本的Forms
控件无法完成工作时使用。
很多用户的电脑被default won't trustActiveX
,它会被禁用;这有时需要手动添加到信任中心。 ActiveX
是基于微软的技术,据我所知,Mac 不支持。如果您(或您向其提供工作簿的任何人)决定在 Mac 上使用它,这也是您必须考虑的事情。
【讨论】:
我一直在寻找这种答案/解释。现在我了解了表单控件相对于 ActiveX 的优缺点。我将使用表单控件,而可以使用它们完成工作。谢谢山姆,谢谢@HansPassant 没问题 - 很高兴为您提供帮助。如果您对提供的答案感到满意,请记住将其标记为如此,这样其他人就知道提供了答案。 没问题,我习惯耐心等待其他意见。 @Sam,我觉得你的回答最有帮助。但也许您愿意在您的答案中再添加一件事,而我不得不以艰难的方式找出答案。 ActiveX 控件有时会“行为不端”并自动增加或调整大小。 mrexcel.com/forum/excel-questions/… 或 blogs.technet.com/b/the_microsoft_excel_support_team_blog/… 有人在 mrexcel.com 线程中发布了一个指向 *** 线程 excel-the-incredible-shrinking-and-expanding-controls 的链接,该线程对 ActiveX 控件的问题进行了很多讨论。【参考方案2】:要知道的一个主要区别是 ActiveX 控件显示为可以在代码中使用的对象 - 尝试将 ActiveX 控件插入工作表,调出 VBA 编辑器 (ALT + F11),您将能够以编程方式访问控件。您不能对表单控件执行此操作(必须改为将宏显式分配给每个控件),但表单控件更易于使用。如果您只是在做一些简单的事情,那么您使用哪个并不重要,但对于更高级的脚本,ActiveX 有更好的可能性。
ActiveX 也更加可定制。
【讨论】:
【参考方案3】:另外值得注意的是,ActiveX 控件仅适用于 Windows,而表单控件则适用于 Windows 和 MacOS 版本的 Excel。
【讨论】:
【参考方案4】:请注意,在某些情况下,单击表单控件或 Active X 控件会为同一个宏提供两种不同的结果 - 情况并非如此。我发现 Active X 更可靠。
【讨论】:
如果您可以提供一个宏,使用 ActiveX / Form 控件提供不同的结果,这将是一个答案。以上是关于什么是 ActiveX控件的主要内容,如果未能解决你的问题,请参考以下文章