2013-02-11 17 views
11

Próbuję wymyślić najprostszy przykład użycia Mono.WebBrowser przy użyciu Gtk w systemie Windows. Wersja Windows.Forms działa fine (domyślnie, jeśli nie określono platformy Platform.Gtk), ale muszę zintegrować się z istniejącą aplikacją wieloplatformową Gtk.Oparta na Gtk Mono.WebBrowser w systemie Windows

Oto prosty przykład:

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(); 
} 

który kompiluje, biegnie i browser.Initialized jest prawdą. Ale nie renderuje się do Gtk.Window (ani żadnego innego Gtk.widget, którego próbowałem). Co powoduje, że przeglądarka rzeczywiście się renderuje? Być może nie mogę renderować tego bezpośrednio w oknie (patrzyłem na źródło mono-docbrowser [1], i mam bardziej skomplikowany przykład, ale nie jest on renderowany).

Zajrzałem do strony internetowej ostro, ale nie mogę jej uruchomić na Windowsie lub Macu z Gtk.

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

+0

Cześć, Doug! Mam dokładnie twój problem - potrzebuję wieloplatformowej przeglądarki internetowej Mono GTK # ([dla interfejsu użytkownika] (http://stackoverflow.com/questions/35518973/gtk-html-viewer-for-ui)). Więc co ostatecznie wybrałeś? Pozdrowienia! –

+0

Poddałem się. Jeśli sytuacja nie zmieniła się w ciągu ostatnich 5 lat, być może posiadanie różnych rozwiązań na różnych platformach może być odpowiedzią. –

Odpowiedz

5

nie mogę sobie przypomnieć dokładnie gdzie, ale czytałem gdzieś, że przestrzeń nazw Mono.WebBrowser jakoś zastąpiona WebkitSharp.

Próbowałem czegoś takiego wcześniej, ale użyłem webkit-sharp.dll z mojej dystrybucji Linuksa. Próbowałem go skompilować i uruchomić na oknach, ale nie zadziałało. Tak więc okazało się, że brakuje mi biblioteki dll webkit-gtk, która jest tym, która faktycznie renderuje całość (ostry webkit to tylko kod kleju, opakowanie, jeśli chcesz)

Wysłałem wtedy e-mail jeden z opiekunów (Andreia Gaita) i uzyskał odpowiedź, która może ci pomóc (o użyciu ostrego w oknach/osxie) podrzuć mi linię i przekażę ci tę pocztę.

+0

OK, brzmi to obiecująco! –

+0

Próbowałem skontaktować się z tobą za pośrednictwem poczty elektronicznej; prosimy o przesłanie wiadomości e-mail. Dzięki! –

+0

Wygląda na to, że będę musiał skontaktować się z oryginalnymi autorami i zobaczyć, co mogę ze sobą złożyć. Dzięki! –

0

Gluezilla jest martwy (nie działa z nowym Firefoksem) i Webkit-sharp nie jest jeszcze dojrzały (technicznie nie jest martwy, ale słyszałem, że wynik jest w większości taki sam). Nie znam innych opcji.

+0

OK, to potwierdza to, co widziałem, co najmniej tak samo, jak rozwiązanie wieloplatformowe. webkit-sharp działa świetnie, w systemie Linux. –

0

Mogę tylko potwierdzić, co powiedział Gustavo: Mono.WebBrowser nigdy nie pracował dla mnie. Problem związany z webkit-sharp jest taki, że nawet jeśli jest to platforma wieloplatformowa, nienawidzi systemu Windows. webkit-sharp jest w rzeczywistości wiązaniem .NET dla webkit-gtk (np. osadzanie WebKit w oknie Gtk). Ale nawet jeśli zarówno Gtk #/Mono, jak i WebKit działają w systemie Windows, webkit-gtk robi tu wiele kłopotów.

0

Nie mogę powiedzieć, dlaczego twój kod nie działa, ale mogę zaproponować ci użycie Awesomium, zhackowanego źródła Chromium, które możesz zintegrować z aplikacją C++ lub .Net.

Ich wiki jest dość niekompletne, ale pobieranie SDK zawiera kilka przykładów, jak go używać.

Awesomium: http://awesomium.com/ Wiki: http://wiki.awesomium.net/

+0

Wygląda na to, że jest to tylko WinForm i WPF. Potrzebuję Gtk. –

+0

Działa nawet w OpenGL, wystarczy zawinąć zdarzenia i skopiować bufory pikseli do okna Gtk. – greenboxal

+0

"Po prostu" zawijanie zdarzeń i kopiowanie buforów pikseli nie wydaje się banalne. W rzeczywistości wygląda na to, że robi to Mono Docbrowser. Ale nie mogę go uruchomić; nie wyświetla się. –