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 );
希望这对您有所帮助。除了上面的代码,我在这里没有其他经验。
我需要一些帮助来加载解压缩的(如果你知道我怎么做的话,或者打包)表单目录。
我搜索了很多,但没有找到任何更新。
我正在尝试调用这个函数:
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 );
希望这对您有所帮助。除了上面的代码,我在这里没有其他经验。