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

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

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

背景介绍

cefsharpjs调用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代码

cefsharpjs调用c

创建一个简单的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#方法时,方法名的首字母会被小写处理。

原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/1386645.html

本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。

(0)
未希的头像未希新媒体运营
上一篇 2024-12-07 05:39
下一篇 2024-12-07 05:40

相关推荐

  • 如何调用MySQL存储过程?

    mysql调用存储过程的语法是 call 存储过程名();,存储过程调用即执行已创建的存储过程。

    2024-12-10
    08
  • 如何使用CefSharp.js与C交互并传递参数?

    CefSharp调用JS的参数包括ExecuteScriptAsync和EvaluateScriptAsync方法,前者无返回值,后者有返回值。JS调用CefSharp对象需注册C#类并设置启用JS。

    2024-12-07
    065
  • 如何实现CefGlue与JavaScript的交互调用?

    CefGlue 是一个用于在 C# 应用程序中嵌入 Chromium 浏览器的库。通过它,你可以使用 JavaScript 与 C# 进行交互。以下是一个简单的示例代码,展示如何在 CefGlue 中调用 JavaScript:,,“csharp,using System;,using System.Windows.Forms;,using CefSharp;,using CefSharp.WinForms;,,public class MyForm : Form,{, private ChromiumWebBrowser browser;,, public MyForm(), {, browser = new ChromiumWebBrowser(“https://www.example.com”);, this.Controls.Add(browser);, browser.Dock = DockStyle.Fill;,, // 注册 JavaScript 对象, browser.RegisterJsObject(“cef”, new JsObject());, },, public class JsObject, {, public void ShowMessage(string message), {, MessageBox.Show(message);, }, },},`,,在这个示例中,我们创建了一个 ChromiumWebBrowser 控件,并注册了一个名为 “cef” 的 JavaScript 对象。你可以在网页中的 JavaScript 代码中调用这个对象的方法,,,`javascript,cef.showMessage(‘Hello from JavaScript!’);,“

    2024-12-06
    047
  • 如何在ASP中有效调用表单数据?

    在asp中调用表单数据,可以使用request对象。如果表单字段名为”username”,则可以通过request.form(“username”)获取该字段的值。

    2024-11-26
    031

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

产品购买 QQ咨询 微信咨询 SEO优化
分享本页
返回顶部
云产品限时秒杀。精选云产品高防服务器,20M大带宽限量抢购 >>点击进入