我(仍在)使用Visual Studio 2005并希望在c#winforms应用程序中嵌入webkit浏览器,最好是作为winforms控件。
我正在寻找一个简单的CefGlue或CefSharp示例,以及最少的必要dll。我无法理解GitHub上的CefSharp示例。
答案 0 :(得分:14)
这很容易记录。
为了使它工作,我创建了一个新的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
}
具有请求处理程序的区域是可选的,这适用于您希望影响调用的时间。在我的示例中,我将对标题图像的调用重新路由到我的驱动器上的图像。
这就是你需要的代码。您还需要将以下文件添加到可执行文件的文件夹中:
根据你想对它们做什么,这些文件中的一些是可选的,但你可以google。
答案 1 :(得分:5)
CefGlue(CEF1的过期版本)和Xilium.CefGlue(CEF3)已经包含演示应用程序。 Xilium.CefGlue包含两个演示应用程序 - 第一个(称为CefGlue.Demo在winforms下运行,在Linux上使用GtkSharp)和CefGlue.Client - 也是非常简单的winforms只有demo。所以CefGlue.Client已经拥有非常简单的winforms控件。
UPD:针对.NET 2.0的Xilium.CefGlue程序集。 Xilium.CefGlue.Client针对.NET 3.5客户端配置文件。但一般情况下,它不使用任何3.5特定的,可以修复。但我建议使用最低的.NET 4.0运行时,因为它有更好的GC。在生产中没有任何意义的安装2.0而不是4.0。