我正在努力想出最简单的使用方法 在Windows上使用Gtk的Mono.WebBrowser。 Windows.Forms版本有效 罚款(默认情况下,如果您未指定Platform.Gtk),但我需要集成到现有的Gtk跨平台应用程序中。
这是一个简单的例子:
public static void Main (string[] args)
{
Gtk.Application.Init ();
Gtk.Window win = new Gtk.Window ("Title");
Mono.WebBrowser.IWebBrowser browser =
Mono.WebBrowser.Manager.GetNewInstance(Mono.WebBrowser.Platform.Gtk);
browser.Load(win.Handle, 500, 250);
win.ShowAll ();
GLib.Timeout.Add( 500, delegate {
browser.Navigation.Go ("http://google.com/");
return false;
});
Gtk.Application.Run ();
}
编译,运行和浏览器.Initialized是真的。但它没有呈现为Gtk.Window(或我尝试过的任何其他Gtk.widget)。触发什么 浏览器实际渲染自己?可能是我无法渲染这个 直接进入一个窗口(我看过mono-docbrowser [1]源代码, 并且有一个更复杂的例子,但它也没有呈现。)
我已经看过webkit-sharp,但无法通过Gtk在Windows或Mac上运行。
[1] https://github.com/mono/mono-tools/tree/master/docbrowser
答案 0 :(得分:5)
我无法回想起究竟在哪里,但我在某处读到Mono.WebBrowser命名空间在某种程度上已被弃用,转而支持WebkitSharp。
之前我尝试过类似的东西,但是我在linux发行版中使用了webkit-sharp.dll。试图编译它并在Windows上运行它但它没有奏效。所以事实证明我错过了webkit-gtk dll,它实际上是渲染整个东西的那个(webkit-sharp只是胶水代码,如果你愿意,它就是一个包装器)
我之后发送了一封电子邮件给其中一位维护人员(Andreia Gaita)并得到了一个可能对你有帮助的回复(关于在windows / osx中使用webkit-sharp)给我留言,我会转发给你那封邮件。
答案 1 :(得分:0)
Gluezilla已经死了(不适用于新的Firefox)并且Webkit-sharp还不成熟(技术上没有死,但我听说结果大致相同)。我不知道其他选择。
答案 2 :(得分:0)
我只能确认Gustavo说的话:Mono.WebBrowser从未为我工作过。 webkit-sharp的问题在于,即使它是跨平台的,它也讨厌Windows。 webkit-sharp实际上是webkit-gtk的.NET绑定(例如,在Gtk窗口中嵌入WebKit)。但即使Gtk#/ Mono和WebKit都在Windows上工作,webkit-gtk在这里也会遇到很多麻烦。
答案 3 :(得分:0)
我不能告诉你为什么你的代码不起作用,但我可以建议你使用Awesomium,一个被黑客攻击的Chromium来源,你可以在C ++或.Net应用程序中集成。
他们的wiki相当不完整,但SDK下载包含了几个如何使用它的示例。
Awesomium:http://awesomium.com/ 维基:http://wiki.awesomium.net/