c# 網頁巢狀套殼開發
阿新 • • 發佈:2019-02-09
套殼直接用webBrower就行,不過在使用過程中,主要存在兩個問題,
一個是網頁核心h5相容問題,通過設定系統登錄檔解決
[(HKEY_CURRENT_USER or HKEY_LOCAL_MACHINE)\Software\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION]
"MyApplication.exe" = dword 8000 (Hex: 0x1F40)
這裡MyApplicaiton.exe 是你的應用程式的EXE檔名。 8000 表示8.0的渲染模式,請對照下表:
IE8 Standards Mode 8000 (0x1F40) -- IE8 標準模式 (Standard Mode), IE8預設的模式
IE7 Standards Mode 7000 (0x1B58) -- IE7 相容檢視模式 (Compatible View), IE8的WebBrowser控制元件預設模式
IE8 Standards Mode (Forced) 8888 (0x22B8) -- IE8 強制標準模式,在渲染失敗的情況下不嘗試用相容檢視模式
一個是網路問題導致第一次開啟失敗,自動重新整理問題:
private void openUrl() { this.webBrowser1.Url = new System.Uri(str, System.UriKind.Absolute);///讀取 this.webBrowser1.DocumentCompleted += new WebBrowserDocumentCompletedEventHandler(wb_DocumentCompleted); } private void wb_DocumentCompleted(object sender, EventArgs e)//這個就是當網頁載入完畢後要進行的操作 { //無法訪問 Trace.WriteLine(this.webBrowser1.DocumentText); if (this.webBrowser1.DocumentText.IndexOf("無法訪問") >= 0) { //開啟失敗 if (idx > Int32.Parse(ConfigurationManager.AppSettings["Sum"])) { return; } idx++; new Thread(o => { Thread.Sleep(Int32.Parse(ConfigurationManager.AppSettings["Time"])); openAgain(); }) { IsBackground = true}.Start(); } else { //開啟成功 } } private void openAgain() { if (this.InvokeRequired) { this.Invoke(new Action(() => { this.openAgain(); })); } else { openUrl(); } }