蓝桉云顶

Good Luck To You!

如何使用Cefsharp.js调用C语言代码?

CefSharpJS 调用 C# 代码可以通过注册 JavaScript 对象来实现。

CefSharp.js调用C#方法的详细实现

背景介绍

CefSharp是一个基于Chromium Embedded Framework(CEF)的.NET封装库,它允许开发者在WinForms或WPF应用程序中嵌入Chromium浏览器,通过CefSharp,可以实现C#与JavaScript之间的相互调用,从而实现更复杂的交互逻辑。

实现步骤与代码示例

1. 准备工作

需要安装CefSharp.WinForms包,可以通过NuGet包管理器进行安装:

Install-Package CefSharp.WinForms

确保项目中引用了必要的命名空间:

using CefSharp;
using CefSharp.WinForms;
using System;
using System.Windows.Forms;

2. 创建WinForms窗体并嵌入ChromiumWebBrowser

创建一个WinForms窗体,并在其中嵌入ChromiumWebBrowser控件:

public partial class MainForm : Form
{
    private ChromiumWebBrowser _browser;
    public MainForm()
    {
        InitializeComponent();
        CefSettings settings = new CefSettings();
        Cef.Initialize(settings);
        string url = "file://" + Directory.GetCurrentDirectory() + @"\index.html";
        _browser = new ChromiumWebBrowser(url)
        {
            Dock = DockStyle.Fill,
        };
        this.Controls.Add(_browser);
        // 注册JS对象以供前端调用
        RegisterJsObject();
    }
    private void RegisterJsObject()
    {
        CefSharpSettings.LegacyJavascriptBindingEnabled = true;
        CefSharpSettings.WcfEnabled = true;
        var callbackObjectForJs = new CallbackObjectForJs();
        _browser.JavascriptObjectRepository.Register("callbackObj", callbackObjectForJs, isAsync: false, options: BindingOptions.DefaultBinder);
    }
}

3. 创建回调类

定义一个回调类,该类的方法可以在JavaScript中被调用:

[ComVisible(true)]
public class CallbackObjectForJs
{
    public void Test()
    {
        Thread th = new Thread(() =>
        {
            MessageBox.Show("Test");
        });
        th.SetApartmentState(ApartmentState.STA);
        th.Start();
    }
}

4. 编写HTML和JavaScript代码

创建一个简单的HTML文件(例如index.html),并在其中编写调用C#方法的JavaScript代码:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Document</title>
</head>
<body>
    <button id="btnTest" onclick="btnTest()">测试</button>
    <script type="text/javascript">
        function btnTest() {
            // 绑定JS对象
            CefSharp.BindObjectAsync('callbackObj');
            // 调用C#方法
            callbackObj.test(); // 注意C#中的类的方法名首字母会变小写
        }
    </script>
</body>
</html>

5. 运行程序

编译并运行程序,点击“测试”按钮时,会弹出一个消息框显示“Test”。

通过上述步骤,我们实现了在CefSharp环境下,JavaScript调用C#方法的功能,关键在于正确配置CefSharpSettings、注册JS对象以及编写相应的回调类,还需注意JavaScript调用C#方法时,方法名的首字母会被小写处理。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

«    2024年12月    »
1
2345678
9101112131415
16171819202122
23242526272829
3031
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
文章归档
网站收藏
友情链接