2013-02-11 34 views
11

Tôi đang cố gắng đưa ra ví dụ đơn giản nhất về việc sử dụng Mono.WebBrowser bằng Gtk trên Windows. Phiên bản Windows.Forms hoạt động tiền phạt (mặc định nếu bạn không chỉ định Platform.Gtk), nhưng tôi cần tích hợp vào một ứng dụng nền tảng Gtk hiện có.Mono.WebBrowser dựa trên Gtk trên Windows

Dưới đây là một ví dụ đơn giản:

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

mà biên dịch, chạy và browser.Initialized là đúng. Nhưng nó không đưa vào một Gtk.Window (hoặc bất kỳ Gtk.widget khác mà tôi đã thử). Trình kích hoạt nào trình duyệt thực sự hiển thị chính nó? Có thể tôi không thể hiển thị trực tiếp trực tiếp này vào Cửa sổ (tôi đã xem xét nguồn đơn docbrowser [1], và có một ví dụ phức tạp hơn, nhưng nó cũng không hiển thị).

Tôi đã xem xét webkit-sharp, nhưng không thể làm cho nó hoạt động trên Windows hoặc Mac với Gtk.

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

+0

Hi, Doug! Tôi có chính xác vấn đề của bạn - tôi cần một trình duyệt web Mono GTK # đa nền tảng ([cho giao diện người dùng] (http://stackoverflow.com/questions/35518973/gtk-html-viewer-for-ui)). Vì vậy, những gì bạn cuối cùng đã chọn? Trân trọng! –

+0

Tôi đã từ bỏ. Nếu mọi thứ không thay đổi trong 5 năm qua, có lẽ có các giải pháp khác nhau trên các nền tảng khác nhau có thể là một câu trả lời. –

Trả lời

5

Tôi không thể nhớ chính xác ở đâu, nhưng tôi đọc ở đâu đó rằng namespace Mono.WebBrowser được bằng cách nào đó phản đối ủng hộ WebkitSharp.

Tôi đã thử một cái gì đó như thế trước đây, nhưng tôi đã sử dụng webkit-sharp.dll từ bản phân phối Linux của mình. Đã cố gắng biên dịch và chạy nó trên các cửa sổ nhưng nó không hoạt động. Vì vậy, nó bật ra rằng tôi đã thiếu dll webkit-gtk đó là một trong đó thực sự ám toàn bộ điều (webkit-sắc nét chỉ là keo-mã, một wrapper nếu bạn sẽ)

Tôi đã gửi một email trở lại sau đó một trong những người bảo trì (Andreia Gaita) và nhận được một phản hồi có thể giúp bạn (về cách sử dụng webkit-sharp trong windows/osx) thả cho tôi một dòng và tôi sẽ chuyển tiếp cho bạn thư đó.

+0

Ok, điều đó có vẻ đầy hứa hẹn! –

+0

Tôi đã thử liên hệ với bạn qua email; xin vui lòng chuyển tiếp email. Cảm ơn! –

+0

Có vẻ như tôi sẽ cần phải liên hệ với các tác giả gốc và xem những gì tôi có thể chia sẻ với nhau. Cảm ơn! –

0

Gluezilla đã chết (không hoạt động với Firefox mới) và Webkit-sharp chưa trưởng thành (về mặt kỹ thuật không chết, nhưng tôi đã nghe kết quả hầu như giống nhau). Tôi không biết các lựa chọn khác.

+0

Ok, điều đó xác nhận những gì tôi đã thấy, ít nhất là nhiều như một giải pháp đa nền tảng. webkit-sharp hoạt động tốt trên Linux. –

0

Tôi chỉ có thể xác nhận những gì Gustavo đã nói: Mono.WebBrowser chưa bao giờ làm việc cho tôi. Vấn đề với webkit-sharp là ngay cả khi nó là nền tảng chéo, nó vẫn ghét Windows. webkit-sharp thực chất là một ràng buộc .NET cho webkit-gtk (ví dụ: nhúng WebKit trong cửa sổ Gtk). Nhưng ngay cả khi cả Gtk #/Mono và WebKit đều hoạt động trên Windows, thì webkit-gtk gây ra nhiều rắc rối ở đây.

0

Tôi không thể cho bạn biết lý do mã của bạn không hoạt động, nhưng tôi có thể đề xuất bạn sử dụng Awesomium, một nguồn Chromium bị tấn công mà bạn có thể tích hợp trong ứng dụng C++ hoặc .Net.

wiki của họ khá chưa hoàn chỉnh nhưng bản tải xuống SDK chứa một số ví dụ về cách sử dụng nó.

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

+0

Có vẻ như đây chỉ là winforms và WPF. Tôi cần Gtk. –

+0

Nó chạy ngay cả trên OpenGL, bạn chỉ cần bọc các sự kiện và sao chép các bộ đệm pixel vào cửa sổ Gtk của bạn. – greenboxal

+0

"Chỉ cần" gói các sự kiện và sao chép các bộ đệm pixel không có vẻ tầm thường. Nhưng, trên thực tế, có vẻ như đó là những gì mà Doco Docbrowser làm. Nhưng tôi không thể làm cho nó hoạt động; nó không hiển thị. –

Các vấn đề liên quan