11

我正在尝试提出在 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 ();
}

它编译、运行和浏览器。初始化为真。但它不会呈现到 Gtk.Window (或我尝试过的任何其他 Gtk.widget )。是什么触发浏览器实际呈现自己?可能是我无法将它直接渲染到窗口中(我查看了 mono-docbrowser [1] 源代码,并且有一个更复杂的示例,但它也没有渲染)。

我看过 webkit-sharp,但不能让它在带有 Gtk 的 Windows 或 Mac 上工作。

[1] https://github.com/mono/mono-tools/tree/master/docbrowser

4

4 回答 4

5

我不记得确切的位置,但我在某处读到 Mono.WebBrowser 命名空间以某种方式被弃用,取而代之的是 WebkitSharp。

我之前尝试过类似的方法,但我使用了我的 linux 发行版中的 webkit-sharp.dll。试图编译它并在 Windows 上运行它,但它没有工作。所以事实证明我错过了 webkit-gtk dll,它是实际渲染整个东西的那个(webkit-sharp 只是胶水代码,如果你愿意的话,一个包装器)

我当时向其中一位维护者(Andreia Gaita)发送了一封电子邮件,并得到了可能对您有所帮助的回复(关于在 windows/osx 中使用 webkit-sharp)给我写信,我会转发给您该邮件。

于 2013-02-15T01:50:49.450 回答
0

Gluezilla已死(不适用于新的 Firefox),Webkit-sharp尚未成熟(技术上还没有死,但我听说结果基本相同)。我不知道其他选择。

于 2013-02-15T01:57:57.397 回答
0

我只能确认古斯塔沃所说的:Mono.WebBrowser 从来没有为我工作过。webkit-sharp 的问题在于,即使它是跨平台的,它也讨厌 Windows。webkit-sharp 实际上是 webkit-gtk 的 .NET 绑定(例如,将 WebKit 嵌入到 Gtk 窗口中)。但是即使 Gtk#/Mono 和 WebKit 都可以在 Windows 上运行,webkit-gtk 也会在这里制造很多麻烦。

于 2013-02-15T20:30:15.750 回答
0

我无法告诉您为什么您的代码不起作用,但我可以建议您使用 Awesomium,这是一种被黑客入侵的 Chromium 源,您可以将其集成到 C++ 或 .Net 应用程序中。

他们的 wiki 非常不完整,但 SDK 下载包含几个有关如何使用它的示例。

Awesomium:http ://awesomium.com/ 维基:http ://wiki.awesomium.net/

于 2013-02-16T22:08:50.747 回答