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);
        }






评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值