WinForm嵌入網頁


1.背景

     WinForm .net4.0項目要求嵌入瀏覽器,VS2015自帶得WebBrowser再打開第三方提供得網頁時會報錯。

2.解決方案:

     嵌入谷歌瀏覽器,使用CefSharp插件。

3.操作方法:

    下載CefSharp插件:

            注意:.net4.0平台下需要使用49.0.0版本得CefSharp插件。

     下載過程:

            ① 打開VS2015;

            ② 選中需要安裝CefSharp插件的項目;

            ③ 單擊鼠標右鍵選擇管理NuGet程序包;

            ④ 選擇瀏覽選項,再搜索處輸入CefSharp.WinForms搜索;

            ⑤ 選擇CefSharp.WinForms,再右側的版本選擇49.0.0;

            ⑥ 點擊安裝;

     代碼:

            ① 添加一個工具類,單例模式

  public class CefUtils
    {
        private static ChromiumWebBrowser chromeBrowser = null;
        /// <summary>
        /// 單例
        /// </summary>
        private static CefUtils instance = null;
        /// <summary>
        /// 單例模式
        /// </summary>
        /// <returns>實例</returns>
        public static CefUtils Instance()
        {
            if (instance == null)
            {
                instance = new CefUtils();
            }
            return instance;
        }
        public ChromiumWebBrowser GetWebBrow(string path)
        {
            try
            {
                chromeBrowser = GetWebBrowser(path);
            }
            catch (Exception ex)
            {
                LogUtil.Error(ex);
            }
            return chromeBrowser;
        }
        /// <summary>
        /// 設置WebBrowser屬性
        /// </summary>
        /// <returns></returns>
        private ChromiumWebBrowser GetWebBrowser(string path)
        {
            CefSettings settings = CefSets();
            if (!Cef.IsInitialized && !Cef.Initialize(settings))
            {
                throw new InvalidOperationException("Cef::Initialize() failed");
            }
            ChromiumWebBrowser chromeBrowser = new ChromiumWebBrowser(path);
            BrowserSettings browserSettings = new BrowserSettings();
            browserSettings.FileAccessFromFileUrls = CefState.Enabled;
            browserSettings.UniversalAccessFromFileUrls = CefState.Enabled;
            chromeBrowser.BrowserSettings = browserSettings;
            return chromeBrowser;
        }
        /// <summary>
        /// 設置瀏覽器屬性
        /// </summary>
        /// <returns></returns>
        private static CefSettings CefSets()
        {
            CefSettings settings = new CefSettings();
            settings.CefCommandLineArgs.Add("MultiThreadedMessageLoop", "false");
            settings.CefCommandLineArgs.Add("LogFile", GetPath("CefGlue.log"));
            settings.CefCommandLineArgs.Add("Locale", "zh_CN");
            settings.CefCommandLineArgs.Add("LocalesDirPath", GetPath("locales"));
            settings.CefCommandLineArgs.Add("WindowlessRenderingEnabled", "true");
            //緩存路徑
            settings.CachePath = GetPath("BrowserCache");
            //執行加載插件命令
            settings.CefCommandLineArgs.Add("debug-plugin-loading", "1");
            settings.CefCommandLineArgs.Add("allow-outdated-plugins", "1");
            settings.CefCommandLineArgs.Add("always-authorize-plugins", "1");
            settings.CefCommandLineArgs.Add("disable-web-security", "1");
            settings.CefCommandLineArgs.Add("enable-npapi", "1");
            settings.UserAgent = "Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36";//瀏覽器內核
            settings.Locale = "zh-CN";
            return settings;

        }
        /// <summary>
        /// 獲取路徑
        /// </summary>
        /// <param name="v"></param>
        /// <returns></returns>
        private static string GetPath(string v)
        {
            return Path.GetFullPath(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, v));
        }
    }

         ② 調用

           

        /// <summary>
        /// 加載網頁
        /// </summary>
        private void loadweb(string url)
        {
            this.Controls.Clear();

            //實例化控件
            ChromiumWebBrowser wb = CefUtils.Instance().GetWebBrow(url);
            //設置停靠方式
            wb.Dock = DockStyle.Fill;

            //加入到當前窗體中
            this.Controls.Add(wb);
        }

完成。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



猜您在找 VLC嵌入網頁,終於要成功了! 在Power BI中動態嵌入網頁 SVG嵌入網頁的幾種方式 在 PowerPoint 2016 中嵌入網頁 WPF使用CefSharp嵌入網頁 WPF 用戶控件嵌入網頁 騰訊視頻嵌入網頁的方法 騰訊視頻嵌入網頁代碼 vue 使用