【问题标题】:CefShap load extension from directoryCefShap 从目录加载扩展
【发布时间】:2020-09-20 15:23:01
【问题描述】:

我需要一些帮助来加载未打包(或打包,如果您知道我该怎么做)的表单目录。
我搜索了很多,但没有找到任何更新的内容。

我正在尝试调用这个函数:

this.browser.RequestContext.LoadExtensionFromDirectory(Directory.GetCurrentDirectory() + 
    "/vendors/static/fcfhplploccackoneaefokcmbjfbkenj", ???????????? );

但我找不到获取文档中描述的IExtensionHandler 的方法:

RequestContextExtensions.LoadExtensionsFromDirectory

我在表单中有一个简单的 CefSharp 嵌入式浏览器,我正在尝试加载扩展。
我不知道如何得到这个IExtensionHandler

这是我的代码:

public partial class MainEmbedBrowser : Form
{
    private string ID;
    private ChromiumWebBrowser browser;

    public MainEmbedBrowser(string url, string combo)
    {
        InitializeComponent();

        this.browser = new ChromiumWebBrowser("localhost", new RequestContext());
        //this.browser.RequestContext.LoadExtensionFromDirectory(Directory.GetCurrentDirectory() + "/vendors/static/fcfhplploccackoneaefokcmbjfbkenj", extensionHandler);
        this.Controls.Add(browser);
        this.browser.Load("https://google.com");

        this.browser.Height = this.Height;
        this.browser.Width = this.Width;
        this.Show();
    }
}

如果有人可以帮助我,在此先感谢

【问题讨论】:

  • 到目前为止您尝试过什么?你能分享你的代码吗?

标签: c# winforms cefsharp chromium-embedded


【解决方案1】:

我对此功能没有任何经验,但是,从查看文档来看,对于您的“问号”,您需要提供一个实现 IExtensionHandler 接口的类。所以,首先您将需要创建这样的东西:

public class MyExtHandler : IExtensionHandler
{
    bool CanAccessBrowser(IExtension extension,IBrowser browser,bool includeIncognito,IBrowser targetBrowser)
    {
        return true;
    }

    IBrowser GetActiveBrowser(IExtension extension,IBrowser browser,bool includeIncognito)
    {
        return browser;
    }

    bool GetExtensionResource(IExtension extension,IBrowser browser,string file, IGetExtensionResourceCallback callback)
    {
        return true;
    }

    bool OnBeforeBackgroundBrowser(IExtension extension, string url, IBrowserSettings settings)
    {
        return true;
    }

    bool OnBeforeBrowser(IExtension extension,IBrowser browser,IBrowser activeBrowser,int index,string url,bool active,IWindowInfo windowInfo,IBrowserSettings settings)
    {
        return true;
    }

    void OnExtensionLoaded(IExtension extension)
    {
    }

    void OnExtensionLoadFailed(CefErrorCode errorCode)
    {
    }

    void OnExtensionUnloaded(IExtension extension)
    {
    }
}

然后,当调用该接口中的函数时,您可以决定在具体类中对它们做什么。现在我只是将它们设置为返回默认值。

一旦你定义了你的类,你就可以创建一个实例,这样你就可以传递到上面的代码行。比如:

var myExtHandler = new MyExtHandler();

this.browser.RequestContext.LoadExtensionFromDirectory(Directory.GetCurrentDirectory() + "/vendors/static/fcfhplploccackoneaefokcmbjfbkenj",myExtHandler  );

我希望这有助于您入门。除了上面的代码,我这里没有其他经验。

【讨论】:

    猜你喜欢
    • 2017-03-27
    • 2014-08-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-17
    • 1970-01-01
    • 2018-02-12
    • 2017-09-20
    相关资源
    最近更新 更多