PC端的混合开发-CefSharp

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_37322178/article/details/83106491

PC端的混合开发-CefSharp

移动端的混合开发是火的不要不要的。最近看了一款软件。采用C#WinForm作为壳,内嵌谷歌浏览器的内核。一个标准的混合应用开发模式。

为什么要这样做?

其实和移动端的出发点差不多。就是为了web端实现主要业务。而壳主要用来调用本地硬件和原生的操作。比如:系统需要集成很多的硬件:小票二维码打印机,扫描枪等。这样通过js和c#的互操作,就达到了目的。

当然。要实现这样的功能。我们还有一种方式,就是开发浏览器插件,这样就能通过js来调用。

好了下面记录一下,具体的过程:环境是vs2013

1、创建WinForm项目。在NuGet里面搜索CefSharp.WinForms. 引入项目


过程可能相当的慢,没办法,墙外面的东西都这样。

另:下载后,会对.net框架有最低,根据提示,安装相应高版本的.net 框架即可
2、引入后,不能以Any CPU的方式启动。需要创建X86 或 X64,如下:



3、页面加入组件


 public MainForm()
        {
            InitializeComponent();
            
            //创建组件,传递URL:可以是本地,也可以是远程地址
            ChromiumWebBrowser browser1 = new ChromiumWebBrowser(@"C:\00-leop\00-工作目录\2018\201801\TRCNZT\TRCNZT\bin\x86\Debug\T.html")
            {
                Dock = DockStyle.Fill
            };
            this.browser = browser1;
           
            //将组件,添加到页面上来
            this.MainPanel.Controls.Add(this.browser);
        }
4、C#调用js

 private void btnAlert_Click(object sender, EventArgs e)
        {
            this.browser.GetBrowser().MainFrame.ExecuteJavaScriptAsync("alert('这是c#调用的js,给文本框赋值!')");
            //txtAccount
            this.browser.GetBrowser().MainFrame.ExecuteJavaScriptAsync("document.getElementById('txtAccount').value='在C#里面给页面文本框进行赋值'");
        }
5、js调用C#
首要要创建被调用的C#对象和方法,注意方法名要小写,大写的时候,会调用失败!


public class TestAsyncJS
    {
       
        /// <param name="text"></param>
        public void messageBox(string text)
        {
            MessageBox.Show(text);
        }
    }
然后注册这个类

  //注册C#对象,用来在js里面调用
            this.browser.RegisterAsyncJsObject("CSharpObj", new TestAsyncJS(), BindingOptions.DefaultBinder);
这样,就能直接在js页面,调用C#方法
 <script>
        function ForSharp(){
            
            alert("准备调用C#的弹窗提示!");
            //注册的对象名称
            CSharpObj.messageBox("hello word");
        }
  </script>
较全的代码:

 public MainForm()
        {
            InitializeComponent();
            
            //创建组件,传递URL:可以是本地,也可以是远程地址
            ChromiumWebBrowser browser1 = new ChromiumWebBrowser(@"C:\00-leop\00-工作目录\2018\201801\TRCNZT\TRCNZT\bin\x86\Debug\T.html")
            {
                Dock = DockStyle.Fill
            };
            this.browser = browser1;
           
            //将组件,添加到页面上来
            this.MainPanel.Controls.Add(this.browser);
 
            this.Text = this.AssemblyTitle;
 
            //注册C#对象,用来在js里面调用
            this.browser.RegisterAsyncJsObject("CSharpObj", new TestAsyncJS(), BindingOptions.DefaultBinder);
        }

猜你喜欢

转载自blog.csdn.net/qq_37322178/article/details/83106491
今日推荐