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 使用