这很容易,但记录得很可悲。
为了使其正常工作,我创建了一个新的 Forms 应用程序,并向我的表单添加了一个 toolstripContainer。还在我的项目中添加了对 CefSharp.dll 和 CefSharp.WinForms.dll 的引用。
这是我的班级代码:
public partial class frmBrowser : Form, IRequestHandler
{
private readonly WebView web_view;
public frmBrowser()
{
InitializeComponent();
web_view = new WebView("http://stackoverflow.com", new BrowserSettings());
web_view.Dock = DockStyle.Fill;
web_view.RequestHandler = this;
tsContainer.ContentPanel.Controls.Add(web_view);
}
#region IRequestHandler Members
bool IRequestHandler.OnBeforeBrowse(IWebBrowser browser, IRequest request,
NavigationType naigationvType, bool isRedirect)
{
System.Diagnostics.Debug.WriteLine("OnBeforeBrowse");
return false;
}
bool IRequestHandler.OnBeforeResourceLoad(IWebBrowser browser,
IRequestResponse requestResponse)
{
System.Diagnostics.Debug.WriteLine("OnBeforeResourceLoad");
IRequest request = requestResponse.Request;
if (request.Url.EndsWith("header.png"))
{
MemoryStream stream = new System.IO.MemoryStream();
FileStream file = new FileStream(@"C:\tmp\header.png", FileMode.Open, FileAccess.Read, FileShare.Read);
byte[] bytes = new byte[file.Length];
file.Read(bytes, 0, (int)file.Length);
stream.Write(bytes, 0, (int)file.Length);
file.Close();
requestResponse.RespondWith(stream, "image/png");
}
return false;
}
void IRequestHandler.OnResourceResponse(IWebBrowser browser, string url,
int status, string statusText,
string mimeType, WebHeaderCollection headers)
{
System.Diagnostics.Debug.WriteLine("OnResourceResponse");
}
#endregion
}
具有请求处理程序的区域是可选的,当您想要影响调用时。在我的示例中,我将对标题图像的调用重新路由到我的 c 驱动器上的图像。
这就是您所需要的代码。您还需要将以下文件添加到可执行文件的文件夹中:
- avcodec-54.dll
- avformat-54.dll
- avutil-51.dll
- 铬包
- icudt.dll
- 库文件
- libEGL.dll
- libGLESv2.dll
- 语言环境文件夹
其中一些文件是可选的,具体取决于您想用它们做什么,但您可以通过谷歌搜索。