【问题标题】:Gtk-based Mono.WebBrowser on WindowsWindows 上基于 Gtk 的 Mono.WebBrowser
【发布时间】:2013-02-11 14:44:53
【问题描述】:

我正在尝试提出使用 Mono.WebBrowser 在 Windows 上使用 Gtk。 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

【问题讨论】:

  • 嗨,道格!我有一个你的问题——我需要一个跨平台的 Mono GTK# 网络浏览器(for user interface)。那么你最终选择了什么?问候!
  • 我放弃了。如果过去 5 年情况没有改变,或许在不同平台上有不同的解决方案可能是一个答案。

标签: c# mono webkit gtk


【解决方案1】:

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

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

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

【讨论】:

  • 好吧,这听起来很有希望!
  • 我已尝试通过电子邮件与您联系;请转发电子邮件。谢谢!
  • 看来我需要联系原作者,看看我能拼凑出什么。谢谢!
  • 就像我在邮件中说的那样,我不太确定它应该如何工作,实际上我在上周末尝试使用更新版本的 webkitgtk 和 gtk sharp 仍然抛出关于找不到“webkit”的异常-1.0" 所以对我来说听起来像是一个名称映射问题(在内部,webkitgtk 库可能被命名为其他名称)
  • @GustavoRubio 嗨!她到底说了什么?我可以在 windows 和 os x 中使用 webkit-sharp 吗?如何?问候!
【解决方案2】:

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

【讨论】:

  • 好的,这证实了我所看到的,至少与跨平台解决方案一样多。 webkit-sharp 在 Linux 上运行良好。
【解决方案3】:

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

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

真棒:http://awesomium.com/ 维基:http://wiki.awesomium.net/

【讨论】:

  • 看来这只是winforms和WPF。我需要 Gtk。
  • 它甚至可以在 OpenGL 上运行,您只需要包装事件并将像素缓冲区复制到您的 Gtk 窗口。
  • “只是”包装事件并复制像素缓冲区似乎并不简单。但是,事实上,这似乎是 Mono Docbrowser 所做的。但我无法让它工作;它不显示。
【解决方案4】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-09-22
    • 2014-12-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多