PRB: Web 頁上無法正常顯示 ActiveX 控件

PRB: Web 頁上無法正常顯示 ActiveX 控件

<script type="text/javascript">function loadTOCNode(){}</script>
文章編號 : 169438
最後修改 : 2006年10月24日
修訂 : 2.0
本文的發佈號曾爲 CHS169438
<script type="text/javascript"> var sectionFilter = "type != 'notice' && type != 'securedata' && type != 'querywords'"; var tocArrow = "/library/images/support/kbgraphics/public/en-us/downarrow.gif"; var depthLimit = 10; var depth3Limit = 10; var depth4Limit = 5; var depth5Limit = 3; var tocEntryMinimum = 1; </script> <script src="/common/script/gsfx/kbtoc.js??4" type="text/javascript"></script>

症狀

<script type="text/javascript">loadTOCNode(1, 'symptoms');</script>
有時候,Web 頁中嵌入的 ActiveX 控件在 Internet Explorer 中顯示爲一個白框,其中有一個紅 x。 還有一些情況下,控件根本不顯示。

原因

<script type="text/javascript">loadTOCNode(1, 'cause');</script>
出現該問題的原因可以是以下某種情形:
丟失 ActiveX 控件所使用的依賴 DLL。
使用許可 ActiveX 控件時丟失 .lpk 文件。
ActiveX 控件包含需要得到運行時許可的其它許可控件。
ActiveX 控件的 <OBJECT> 標記中丟失 CODEBASE 屬性。

解決方案

<script type="text/javascript">loadTOCNode(1, 'resolution');</script>

丟失 ActiveX 控件所使用的依賴 DLL

<script type="text/javascript">loadTOCNode(2, 'resolution');</script>

對於用 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:
:
:

[Add.Code]
SIMPLE.OCX=SIMPLE.OCX
ASYCFILT.DLL=ASYCFILT.DLL
MSVBVM50.DLL=MSVBVM50.DLL

:

[ASYCFILT.DLL]
 hook=AsycFilt.cab_Installer
FileVersion=2,20,4056,1
 [AsycFilt.cab_Installer]
file-win32-x86=http://activex.microsoft.com/controls/vb5/AsycFilt.cab
InfFile=AsycFilt.inf
 [MSVBVM50.DLL]
hook=MSVBVM50.cab_Installer
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 文件

<script type="text/javascript">loadTOCNode(2, 'resolution');</script>

此問題的常見症狀是,在開發計算機上 ActiveX 控件可以正常顯示,而在其它計算機上則不能。

爲了在一臺未經許可的計算機上的 HTML 頁面中使用許可控件,您必須首先生成一個授權包文件 (.lpk),然後在實際 ActiveX 控件的 <OBJECT> 標記之前,爲許可管理器對象插入另一個 <OBJECT> 標記。

有關其它信息,請參見 Microsoft Knowledge Base 中的下列文章:
159923 (http://support.microsoft.com/kb/159923/EN-US/) HOWTO: 在 Internet Explorer 中使用授權 ActiveX 控件

ActiveX 控件包含需要得到運行時授權的其它授權控件

<script type="text/javascript">loadTOCNode(2, 'resolution');</script>

例如,含有 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 屬性

<script type="text/javascript">loadTOCNode(2, 'resolution');</script>

在未安裝 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>

參考

<script type="text/javascript">loadTOCNode(1, 'references');</script>
有關其它信息,請參見以下 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
 
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章