1. 程式人生 > >ACTIVEX控制元件載入上了但沒作用

ACTIVEX控制元件載入上了但沒作用

IE載入activex的水很深啊,說不定什麼問題就導致載入不了了,今天終於解決了這個頭疼的問題,記錄一下

現象:一開始的時候activex可以正常載入並使用,可是裝了某某activex控制元件後,我的activex控制元件可以正常載入,在管理載入項中顯示正常,已啟動,但就不能運行了,

js載入不上,new ActiveXObject丟擲異常

try {  
         objCard = new ActiveXObject("Uprain.CardAccessorCtrl.1");                  
    }  
catch (e) {  
         alert("呼叫ActiveX失敗!");  
    }  

重灌系統後試了試,現象還是一樣,應該是某某控制元件修改了某些ie設定,導致我的外掛不能運行了,

比較登錄檔後果不其然,原來是某某外掛在登錄檔這個位置

HKEY_CURRENT_USER\Software\Microsoft\Internet Explorer\Main

增加了這個鍵值對

TabProcGrowth 值為0

把這個鍵值對刪掉我的控制元件就可以運行了

到底為什麼這個鍵值對會對我的控制元件產生影響不得而知,這個鍵值對的作用如下:

登錄檔項 TabProcGrowth 負責定義 IE 瀏覽器啟動 IEXPLORE.EXE 程序的方式,隨著此登錄檔項的值不同,IE 瀏覽器將採用不同的策略執行 IEXPLORE.EXE 程序。如果 TabProcGrowth 不存在,或者即使存在但沒有設定任何值,那麼 IE 瀏覽器將繼續採用分離 IEXPLORE.EXE 程序、直至達到可用記憶體與空閒系統資源的上限為止的預設設定。

如果您新建 TabProcGrowth 時將型別設定為 DWORD 值,那麼您可以按照如下的定義自行設定 TabProcGrowth 的值:

如果TabProcGrowth 的值被設定為 0,IE 瀏覽器將不再為主視窗與選項卡分離 IEXPLORE.EXE 程序,每一個 IE 主視窗以及其中的所有選項卡都將合併共用一個 IEXPLORE.EXE 程序。

例如,假設您啟動了兩個 IE 主視窗,一個主視窗擁有四個選項卡、一個主視窗擁有兩個選項卡,Windows 將只啟動兩個 IEXPLORE.EXE 程序對應這兩個 IE 主視窗,而不是啟動八個 IEXPLORE.EXE 程序對應兩個主視窗及六個選項卡。注意,IE 主視窗的程序不能合併,兩個 IE 主視窗無法合併為一個 IEXPLORE.EXE 程序。

而且,在 TabProcGrowth 的值被設定為 0 後,Windows 7/Server 2008(R2)/Vista 將無法以保護模式執行 IE 瀏覽器,因為 IE 保護模式只能在 IEXPLORE.EXE 程序分離模式中生效。

如果TabProcGrowth 的值被設定為 1,IE 瀏覽器將為每個主視窗使用一個分離的 IEXPLORE.EXE 程序,為每個主視窗中的所有選項卡使用一個分離的IEXPLORE.EXE 程序,但不會為每個單獨的選項卡分離 IEXPLORE.EXE 程序。

例如,假設您啟動了兩個 IE 主視窗,一個主視窗擁有四個選項卡、一個主視窗擁有兩個選項卡,Windows 將啟動四個 IEXPLORE.EXE 程序。其中兩個 IEXPLORE.EXE 程序對應兩個 IE 主視窗,另兩個 IEXPLORE.EXE 程序分別對應第一主視窗中的四個選項卡與第二主視窗中的兩個選項卡。

在TabProcGrowth 的值被設定為 1 後,Windows7/Server 2008(R2)/Vista 可以以保護模式執行 IE 瀏覽器。

如果TabProcGrowth 的值被設定為任意大於 1 的整數數字(例如 5),IE 瀏覽器將像預設設定一樣為所有的主視窗與選項卡分離 IEXPLORE.EXE 程序,但 IEXPLORE.EXE 程序的總數將不會超過 TabProcGrowth 指定的整數數字。在 IEXPLORE.EXE 程序的數量達到上限後,如果您繼續新建選項卡,那麼所有的選項卡將按照平均分配的原則共用已經啟用的 IEXPLORE.EXE 程序。

在TabProcGrowth 的值被設定為任意大於 1 的整數數字後,Windows 7/Server 2008(R2)/Vista 可以以保護模式執行 IE 瀏覽器。

如果您新建 TabProcGrowth 時將型別設定為字串值,那麼您還可以按照如下的定義自行設定TabProcGrowth 的值:

如果 TabProcGrowth 的值被設定為 small(字串值),Windows 同時執行的 IEXPLORE.EXE 程序數量將被限制為 5 個。而且,必須至少開啟 15 個選項卡才會出現第三個 IEXPLORE.EXE 程序。

如果TabProcGrowth 的值被設定為 medium(字串值),Windows 同時執行的 IEXPLORE.EXE 程序數量將被限制為 9 個。而且,必須至少開啟 17 個選項卡才會出現第五個 IEXPLORE.EXE 程序。

如果TabProcGrowth 的值被設定為 large(字串值),Windows 同時執行的 IEXPLORE.EXE 程序數量將被限制為 16 個。而且,必須至少開啟 21 個選項卡才出現第九個 IEXPLORE.EXE 程序。

因此,如果您的計算機可用記憶體與空閒系統資源緊缺,建議將字串值型別的 TabProcGrowth 登錄檔項的值設定為 small 或 medium。