CefShap 从目录加载扩展

CefShap load extension from directory

我需要一些帮助来加载解压缩的(如果你知道我怎么做的话,或者打包)表单目录。
我搜索了很多,但没有找到任何更新。

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

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

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

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

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

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

定义 class 后,您可以创建一个实例,以便可以传递到上面的代码行。类似于:

var myExtHandler = new MyExtHandler();

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

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