ActiveX控件问题

王朝干货·作者佚名  2011-12-05
窄屏简体版  字體: |||超大  

把<ActiveX控件>写在<<帮助和支持中心>>查一查也许会查到:有时候,Web 页中嵌入的 ActiveX 控件在 Internet Explorer 中显示为一个白框,其中有一个红 x。 还有一些情况下,控件根本不显示。

回到顶端

原因

出现该问题的原因可以是以下某种情形: • 丢失 ActiveX 控件所使用的依赖 DLL。

• 使用许可 ActiveX 控件时丢失 .lpk 文件。

• ActiveX 控件包含需要得到运行时许可的其它许可控件。

• ActiveX 控件的 <OBJECT> 标记中丢失 CODEBASE 属性。

回到顶端

解决方案

丢失 ActiveX 控件所使用的依赖 DLL

对于用 MFC 写成的 C++ 控件,一定要在 .inf 文件中指定正确版本的 MFC DLL,以便与控件一起打包。

有关其它信息,请参见 Microsoft Knowledge Base 中的下列文章:

167158 (http://support.microsoft.com/kb/167158/EN-US/) 如何打包 MFC 控件以便在 Internet 上使用

对于 Visual Basic 控件,应确保将正确版本的 VB 运行时 DLL 与控件一起打包。 例如,典型的 Visual Basic 5.0 控件要求两个 .cab 文件与其一同打包: Asycfilt.cab 和 Msvbvm50.cab。 对于正确打包这两个 DLL 文件的 VB5 控件(在本例中为 Simple.ocx)来说,其 .inf 文件有以下几项涉及到 .cab 文件中所包装的这两个 DLL: :

file-win32-x86=http://activex.microsoft.com/controls/vb5/

InfFile=AsycFilt.inf

FileVersion=5,0,37,24

[MSVBVM50.cab_Installer]

file-win32-x86=http://activex.microsoft.com/controls/vb5/MSVBVM50.cab

InfFile=MSVBVM50.inf

某些情况下,客户端计算机中可能已正确注册了需要的依赖 DLL,但它不在注册表所指定的目录中。这有可能是用户无意中移动了 DLL 的位置或从计算机中删除该文件后,忘记了相应地更新注册表项。

解决这个问题最简便的方法是:运行注册表编辑器 (Regedit.exe),然后搜索相关 DLL 名称,以确定丢失的相关 DLL 的预期位置。 如果该目录中已经不存在该文件,则应手动将 DLL 复制到该位置。 然后,重新启动 Internet Explorer,转到含有 ActiveX 控件的页面,看它能否正确显示。

警告: “注册表编辑器”使用不当将导致严重的系统问题,可能需要重新安装 Windows 才能解决问题。 Microsoft 无法保证任何因使用"注册表编辑器"而造成的问题都能得到解决。 因此,使用本工具需要您自担风险。

回到顶端

使用许可 ActiveX 控件时丢失 .lpk 文件

此问题的常见症状是,在开发计算机上 ActiveX 控件可以正常显示,而在其它计算机上则不能。

为了在一台未经许可的计算机上的 HTML 页面中使用许可控件,您必须首先生成一个授权包文件 (.lpk),然后在实际 ActiveX 控件的 <OBJECT> 标记之前,为许可管理器对象插入另一个 <OBJECT> 标记。

有关其它信息,请参见 Microsoft Knowledge Base 中的下列文章:

159923 (http://support.microsoft.com/kb/159923/EN-US/) HOWTO: 在 Internet Explorer 中使用授权 ActiveX 控件

回到顶端

ActiveX 控件包含需要得到运行时授权的其它授权控件

例如,含有 Visual Basic 4.0 版 Mscomm32.ocx 的 ActiveX 控件即是一个授权控件。 在任何安装了 Visual Basic 或 Visual C++ 的机器上,该 ActiveX 控件都能正常显示,因为在安装 VB 和 VC++ 时,VB 和 VC++ 已自动为这些控件提供了运行时授权。

要解决这一问题,请找到同一控件的非授权版本,或其它具有相同功能的第三方控件。 在授权 Mscomm32.ocx 的例子中,随 Visual Basic 5.0 一起分发的 Mscomm32.ocx 版本未经授权,可以使用。 该控件可直接从以下地址下载: http://activex.microsoft.com/controls/vb5/mscomm32.cab (http://activex.microsoft.com/controls/vb5/mscomm32.cab.) .

回到顶端

ActiveX 控件的 <OBJECT> 标记中丢失 CODEBASE 属性

在未安装 ActiveX 控件的机器上,如果控件 <OBJECT> 标记中没有指定 CODEBASE,将不能下载该控件,因而也不能显示。

因此,一定要在控件的 <OBJECT> 标记中指定 CODEBASE 属性,并指向正确的控件下载位置。

例如,如果您在 HTML 页面中插入一个 HTML 布局控件,一定要在 Object 标记中为 HTML 布局控件设置 Codebase 属性,如下所示: <OBJECT CLASSID="CLSID:812AE312-8B8E-11CF-93C8-00AA00C08FDF"

ID="Layout1_alx" STYLE="LEFT:0;TOP:0"

CODEBASE="http://activex.microsoft.com/controls/

MSpert10.cab#Version=1,0,5,1">

<PARAM NAME="ALXPATH" REF VALUE="Layout1.alx">

</OBJECT>

回到顶端

参考

有关其它信息,请参见以下 Microsoft Knowledge Base 文章:

167597 (http://support.microsoft.com/kb/167597/EN-US/) FILE: 为下载组件指定 FileVersion 和 #Version

165075 (http://support.microsoft.com/kb/165075/EN-US/) HOWTO: 在含有 .inf 的 IE 中下载相关 DLL

回到顶端

--------------------------------------------------------------------------------

这篇文章中的信息适用于:

• Microsoft ActiveX SDK

• Microsoft Internet Explorer 3.0

• Microsoft Internet Explorer 3.01

• Microsoft Internet Explorer 3.02

• Microsoft Internet Explorer 4.0 128-Bit Edition

回到顶端

关键字: kbactivex kbdsi kbie300 kbie301 kbie302 kbie400 kbie500 kbiefaq kbprb KB169438

回到顶端

Microsoft和/或其各供应商对于为任何目的而在本服务器上发布的文件及有关图形所含信息的适用性,不作任何声明。 所有该等文件及有关图形均"依样"提供,而不带任何性质的保证。Microsoft和/或其各供应商特此声明,对所有与该等信息有关的保证和条件不负任何责任,该等保证和条件包括关于适销性、符合特定用途、所有权和非侵权的所有默示保证和条件。在任何情况下,在由于使用或运行本服务器上的信息所引起的或与该等使用或运行有关的诉讼中,Microsoft和/或其各供应商就因丧失使用、数据或利润所导致的任何特别的、

参考资料:帮助和支持中心

打开IE选项,安全-自定义级别中ActiveX控件和插件,启动相应的项目就可以了,建议在选择‘对于未签名的ActiveX控件’还是不要启用为好。

小贴士:① 若网友所发内容与教科书相悖,请以教科书为准;② 若网友所发内容与科学常识、官方权威机构相悖,请以后者为准;③ 若网友所发内容不正确或者违背公序良俗,右下举报/纠错。
 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有  導航