1. 程式人生 > 實用技巧 >Webbrowser指定IE核心版本(更改登錄檔)

Webbrowser指定IE核心版本(更改登錄檔)

1:WebBrowser 響應回車Enter鍵(相容Silverlight)

在Form放置一個ApplicationEvents控制元件,
在OnMessage事件中寫下面的程式碼:

uses   ActiveX

procedure TForm1.ApplicationEvents1Message(var Msg: tagMSG;
  var Handled: Boolean);

const
  StdKeys = [VK_TAB, VK_RETURN, VK_DELETE, VK_BACK]; { standard   keys }
  ExtKeys = [VK_LEFT, VK_RIGHT]; { extended   keys }
  fExtended = $01000000; { extended   key   flag }

begin

Handled   :=   False;
    with   Msg   do
        if   ((Message   > =   WM_KEYFIRST)   and   (Message   <=   WM_KEYLAST))   and
            ((wParam   in   StdKeys)   or   {$IFDEF   VER120}(GetKeyState(VK_CONTROL)   <   0)   or   {$ENDIF}
            (wParam   in   ExtKeys)   and   ((lParam   and   fExtended)   =   fExtended))   then
        try
            if   IsChild(WebBrowser1.Handle,   hWnd)   then
            {   handles   all   browser   related   messages   }
            begin
                with  WebBrowser1.Application   as   IOleInPlaceActiveObject   do
                    Handled   :=   TranslateAccelerator(Msg)   =   S_OK;
                if   not   Handled   then
                begin
                    Handled   :=   True;
                    TranslateMessage(Msg);
                    DispatchMessage(Msg);
                end;
            end;
        except  

        end;

end;

2: 如果電腦上安裝了IE8或者之後版本的IE瀏覽器,Webbrowser控制元件會使用IE7相容模式來顯示網頁內容。解決方法是在登錄檔中為你的程序指定引用IE的版本號。

比如我的程式叫做a.exe

對於32位程式

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION

對於64位程式

HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\MAIN\FeatureControl\FEATURE_BROWSER_EMULATION

在對應的路徑下新增你程式名字,如a.exe為名的value,DWORD值。

值選項:

10000(0×2710) IE10
9999 (0x270F) IE9 忽略html5
9000 (0×2328) IE9
8888 (0x22B8) IE8 忽略html5
8000 (0x1F40) IE8
7000 (0x1B58) IE7

3: 遮蔽指令碼錯誤

1.什麼是javascript指令碼錯誤
1.1 概述
JavaScript指令碼錯誤包含“執行時錯誤”和“語法錯誤”。
1.2 JavaScript“語法錯誤”
JavaScript語法錯誤是指當 JavaScript語句違反了 JavaScript指令碼語言的一條或多條語法規則時導致的錯誤。JavaScript語法錯誤發生在程式編譯階段,在開始執行該程式之前。
1.3 JavaScript“執行時錯誤”
JavaScript執行時錯誤是指當 JavaScript指令碼試圖執行一個系統不能執行的動作時導致的錯誤。當正在執行指令碼、計算變量表達式、或者正在動態分配記憶體時出現 JavaScript執行時錯誤時。
2. 為什麼要遮蔽javascript指令碼錯誤?
由於開發海納產品時,使用WebBrowser和CHtmlView來展示頁面,進行填表等操作;但是由於開啟的頁面大多是其他使用者的CMS頁面,所以難免有些有指令碼錯誤,於是決定要來遮蔽指令碼錯誤,提升產品的易用性和友好性。
3. 怎麼去遮蔽javascript指令碼錯誤?
3.1 使用SetSilent函式
使用WebBrowser或CHtmlView的SetSilent函式可以達到遮蔽指令碼錯誤的目的,不過這種情況,其它提示資訊也都不顯示了,例如使用alert進行的錯誤提示。
如果你覺得這樣能滿足你,那麼推薦使用這種方法,簡單啊!
3.2 過載IOleCommandTarget的Exec函式