目录中的CefShap负载扩展

问题描述

我需要一些帮助来加载解压后的表单目录(如果您知道如何打包的话)。
我进行了很多搜索,但没有发现任何更新。

我正在尝试调用此函数:

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

但是我找不到找到文档中所述的IExtensionHandler的方法:

RequestContextExtensions.LoadExtensionsFromDirectory

我在Form中有一个简单的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();
    }
}

如果有人可以帮助我,请先谢谢

解决方法

我对此功能没有任何经验,但是,从查看文档开始,对于您的“问号”,您将需要提供一个实现IExtensionHandler 接口的类。.因此,首先您将需要创建以下内容:

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

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

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

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

    bool OnBeforeBrowser(IExtension extension,IBrowser activeBrowser,int index,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  );

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

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...