Skip to Content

將 TWebBrowser 設定成 IE 11

C++ Builder 不管是 VCL 或 FireMonkey,都有 TWbeBrowser 元件。在 Windows 系統下,該元件就是一個內嵌的 IE。

其實我很想不要用 IE,希望找到內嵌的 chrome 元件,但目前找到的好像不是很好處理,也擔心日後升級問題,所以在 Windows 下還是暫時先以 IE 為主。

查了說明文件,指出內建的 TWebBrowser 預設的版本是 IE 7。所以我寫了一個很簡單的程式,用 FireMonkey 版的 TWebBrowser,直接連到一個 HMLT5 的網頁

https://www.w3schools.com/html/tryit.asp?filename=tryhtml5_video

這個網頁我在 IE 上測試,要 IE 11 才能順利執行。

底下是我的測試程式執行結果,可以看到就是沒有什麼結果。

接著要修改內嵌 IE 的版本,方法就是直接修改 Windows 的登錄檔。

【手動修改】

簡單來說,就是在登錄檔的這個位置

HKEY_LOCAL_MACHINE (or HKEY_CURRENT_USER) \SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BEHAVIORS\

在此目錄下加入一組 DWOD,名稱就是你的程式,內容是十進位的 11001。這是要設定成 IE 11 的版本,但前提你的電腦中要有安裝才會有作用。

詳細說明可以參考 MSDN,裡面有各種版本的設定值。

https://msdn.microsoft.com/en-us/library/ee330730(v=vs.85).aspx#browser_emulation

在我自己的實驗中,加在 HKEY_LOCAL_MACHINE 是沒有作用的,還花了我不少時間測試,後來改在這層 HKEY_CURRENT_USER 才成功。

底下是修改後的執行畫面,順利成功了。

【程式修改】

手動修改是很麻煩的,也不能要求使用者自己做這件事。幸好在文件中有找到一個自動修改的程式,試了也可以順利執行。

程式碼詳見底下網頁的下方。

http://docwiki.embarcadero.com/Libraries/Tokyo/en/FMX.WebBrowser.TWebBrowser

抄一份起來備用,別忘了要 include <System.Win.Registry.hpp>

void __fastcall TForm1::FormCreate(TObject *Sender) {
	SetPermissions();
}
 
void __fastcall TForm1::SetPermissions() {
#ifdef _Windows
	UnicodeString cHomePath = "SOFTWARE";
	UnicodeString cFeatureBrowserEmulation = 
"Microsoft\\Internet Explorer\\Main\\FeatureControl\\FEATURE_BROWSER_EMULATION\\";
	int cIE11 = 11001;
	UnicodeString sKey = ExtractFileName(ParamStr(0));
	TRegIniFile *Reg = new TRegIniFile(cHomePath);
	__try {
		TRegistry *reg1 = dynamic_cast(Reg);
		if (Reg->OpenKey(cFeatureBrowserEmulation,
			true) && !(reg1->KeyExists(sKey) && reg1->ReadInteger(sKey)== cIE11)) {
			reg1->WriteInteger(sKey, cIE11);
		}
	}
	__finally {
		Reg->Free();
	}
#endif
}

事實上,我就是手動修改登錄檔一直失敗,後來才發現這個程式就是在做這件事,執行後果然成功了。再去反查登錄檔,才得知是記錄在 HKEY_CURRENT_USER 這一層。

 

回應

發表新回應

這個欄位的內容會保密,不會公開顯示。
  • 自動將網址與電子郵件地址轉變為連結。
  • 自動斷行和分段。
  • 可使用的 HTML 標籤:<a> <address> <b> <blockquote> <br> <caption> <center> <cite> <code> <dd> <del> <div> <dl> <dt> <em> <h1> <h2> <h3> <h4> <h5> <h6> <hr> <i> <img> <ins> <li> <ol> <p> <pre> <span> <strike> <strong> <sub> <sup> <table> <tbody> <td> <th> <tr> <u> <ul>
    Allowed Style properties: background, background-attachment, background-color, background-image, background-position, background-repeat, border, border-bottom, border-bottom-color, border-bottom-style, border-bottom-width, border-collapse, border-color, border-left, border-left-color, border-left-style, border-left-width, border-right, border-right-color, border-right-style, border-right-width, border-spacing, border-style, border-top, border-top-color, border-top-style, border-top-width, border-width, bottom, caption-side, clip, color, direction, empty-cells, font, font-family, font-size, font-size-adjust, font-stretch, font-style, font-variant, font-weight, height, left, letter-spacing, line-height, list-style, list-style-image, list-style-position, list-style-type, margin, margin-bottom, margin-left, margin-right, margin-top, max-height, max-width, min-height, min-width, overflow, padding, padding-bottom, padding-left, padding-right, padding-top, right, table-layout, text-align, text-decoration, text-indent, text-transform, top, unicode-bidi, vertical-align, white-space, width, word-spacing, z-index

更多關於格式選項的資訊

CAPTCHA
驗證碼只有阿拉伯數字, 這是躲廣告用的, 麻煩你輸入了.
Image CAPTCHA
Enter the characters shown in the image.


story | about seo