美文网首页
CefSharp For WPF基本使用

CefSharp For WPF基本使用

作者: Lulus | 来源:发表于2018-01-12 10:56 被阅读0次

    Nuget引用

    CefSharp.Wpf
    CefSharp.Common
    cef.redist.x64
    cef.redist.x86
    

    直接搜索安装CefSharp.Wpf即可,因为CefSharp.Wpf依赖于其他三个包,所以会自动安装四个包

    1

    先更改设置

    指定特定的平台,x64或者x86,默认是Any CPU
    不进行配置的话,CefSharp是不支持Any CPU的

    2

    WPF写法

    xmlns:cefSharpWPF="clr-namespace:CefSharp.Wpf;assembly=CefSharp.Wpf"
    <cefSharpWPF:ChromiumWebBrowser Address="url"></cefSharpWPF:ChromiumWebBrowser>
    

    Any CPU的支持

    using System.Windows;
    using System;
    using System.Runtime.CompilerServices;
    using CefSharp;
    using System.IO;
    using System.Reflection;
    using System.Windows.Threading;
    using CefSharpWpfDemo.Log;
    
    namespace CefSharpWpfDemo
    {
        /// <summary>
        /// Interaction logic for App.xaml
        /// </summary>
        public partial class App : Application
        {
            public App()
            {
                // Add Custom assembly resolver
                AppDomain.CurrentDomain.AssemblyResolve += Resolver;
                //Any CefSharp references have to be in another method with NonInlining
                // attribute so the assembly rolver has time to do it's thing.
                InitializeCefSharp();
            }
    
            [MethodImpl(MethodImplOptions.NoInlining)]
            private static void InitializeCefSharp()
            {
                var settings = new CefSettings();
    
                // Set BrowserSubProcessPath based on app bitness at runtime
                settings.BrowserSubprocessPath = Path.Combine(AppDomain.CurrentDomain.SetupInformation.ApplicationBase,
                                                       Environment.Is64BitProcess ? "x64" : "x86",
                                                       "CefSharp.BrowserSubprocess.exe");
    
                // Make sure you set performDependencyCheck false
                Cef.Initialize(settings, performDependencyCheck: false, browserProcessHandler: null);
            }
    
            // Will attempt to load missing assembly from either x86 or x64 subdir
            // Required by CefSharp to load the unmanaged dependencies when running using AnyCPU
            private static Assembly Resolver(object sender, ResolveEventArgs args)
            {
                if (args.Name.StartsWith("CefSharp"))
                {
                    string assemblyName = args.Name.Split(new[] { ',' }, 2)[0] + ".dll";
                    string archSpecificPath = Path.Combine(AppDomain.CurrentDomain.SetupInformation.ApplicationBase,
                                                           Environment.Is64BitProcess ? "x64" : "x86",
                                                           assemblyName);
    
                    return File.Exists(archSpecificPath)
                               ? Assembly.LoadFile(archSpecificPath)
                               : null;
                }
    
                return null;
            }
        }
    }
    

    相关资料

    https://github.com/cefsharp/CefSharp/issues/1714

    示例代码

    https://github.com/zLulus/NotePractice/tree/dev3/WPF/CefSharpWpfDemo

    官方资料

    https://www.codeproject.com/Articles/881315/Display-HTML-in-WPF-and-CefSharp-Tutorial-Part
    https://github.com/cefsharp/CefSharp/wiki/Quick-Start
    http://cefsharp.github.io/

    相关文章

      网友评论

          本文标题:CefSharp For WPF基本使用

          本文链接:https://www.haomeiwen.com/subject/quoxoxtx.html