2013-02-11 6 views
11

Sto cercando di trovare l'esempio più semplice di utilizzo del Mono.WebBrowser utilizzando Gtk su Windows. La versione di Windows.Forms funziona con (predefinito se non si specifica Platform.Gtk), ma è necessario integrarlo in un'applicazione Gtk esistente multipiattaforma.Mono.WebBrowser basato su Gtk su Windows

Ecco un semplice esempio:

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

che compila, corre, e browser.Initialized è vero. Ma non esegue il rendering in Gtk.Window (o in qualsiasi altro Gtk.widget che ho provato). Che cosa fa scattare il browser per il rendering effettivo? Può darsi che non riesca a rendere questo direttamente in una finestra (ho guardato il sorgente mono-docbrowser [1], e ho un esempio più complicato, ma non esegue il rendering neanche).

Ho guardato a webkit-sharp, ma non riesco a farlo funzionare su Windows o Mac con Gtk.

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

+0

Ciao, Doug! Ho esattamente il tuo problema: ho bisogno di un browser web Mono GTK # multipiattaforma ([per l'interfaccia utente] (http://stackoverflow.com/questions/35518973/gtk-html-viewer-for-ui)). Quindi cosa hai scelto finalmente? Saluti! –

+0

Mi sono arreso. Se le cose non sono cambiate negli ultimi 5 anni, forse avere soluzioni diverse su piattaforme diverse potrebbe essere una risposta. –

risposta

5

non ricordo esattamente dove, ma ho letto da qualche parte che il namespace Mono.WebBrowser era in qualche modo sconsigliata a favore di WebkitSharp.

Ho provato qualcosa del genere, ma ho usato webkit-sharp.dll dalla mia distribuzione Linux. Ho cercato di compilarlo ed eseguirlo su Windows ma non ha funzionato. Quindi ho scoperto che mi mancava il webkit-gtk dll che è quello che rende veramente l'intera cosa (webkit-sharp è solo codice colla, un wrapper se vuoi)

Ho inviato una e-mail allora a uno dei manutentori (Andreia Gaita) e ottenuto una risposta che potrebbe aiutarti (sull'uso di webkit-sharp in windows/osx) mandami una riga e ti inoltrerò quella mail.

+0

Ok, sembra promettente! –

+0

Ho provato a contattarti via email; per favore inoltrare l'e-mail. Grazie! –

+0

Sembra che avrò bisogno di contattare gli autori originali e vedere cosa posso mettere insieme. Grazie! –

0

Gluezilla è morto (non funziona con il nuovo Firefox) e Webkit-sharp non è ancora maturo (tecnicamente non è morto, ma ho sentito che il risultato è per lo più lo stesso). Non conosco altre opzioni.

+0

Ok, questo conferma quello che ho visto, almeno tanto quanto una soluzione multipiattaforma. webkit-sharp funziona alla grande, su Linux. –

0

Posso solo confermare quello che ha detto Gustavo: Mono.WebBrowser non ha mai funzionato per me. Il problema con webkit-sharp è che anche se è multipiattaforma, odia Windows. webkit-sharp è in effetti un binding .NET per webkit-gtk (ad esempio, incorporare WebKit in una finestra Gtk). Ma anche se Gtk #/Mono e WebKit funzionano tutti su Windows, webkit-gtk crea molti problemi qui.

0

Non riesco a spiegarti perché il tuo codice non funziona, ma posso suggerirti di utilizzare Awesomium, una fonte compromessa di Chromium che puoi integrare in un'applicazione C++ o .NET.

Il wiki è piuttosto incompleto ma il download dell'SDK contiene diversi esempi su come utilizzarlo.

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

+0

Sembra che questo sia solo Winform e WPF. Ho bisogno di Gtk. –

+0

Funziona anche su OpenGL, è sufficiente avvolgere gli eventi e copiare i pixel buffer nella finestra di Gtk. – greenboxal

+0

"Semplicemente" avvolgere gli eventi e copiare i pixel buffer non sembra banale. Ma, in effetti, sembra che sia quello che fa il Mono Docbrowser. Ma non riesco a farlo funzionare; non viene visualizzato. –