2009-05-07 29 views
11

Có trình duyệt nào tôi có thể nhúng trong ứng dụng C++ trên Windows không?Trình duyệt nhúng nào cho dự án C++?

Tôi cần tất cả các tính năng điển hình của trình duyệt có (máy khách HTTP, hỗ trợ cookie, trình phân tích HTML kiểu DOM, công cụ JavaScript) ngoại trừ hiển thị. Bởi vì tôi không cần khả năng dựng hình (và đó là một phần khá lớn của một trình duyệt), tôi thích một trình duyệt có thiết kế không nguyên khối nên tôi sẽ không phải đưa các công cụ hiển thị vào dự án của mình.

Thật tuyệt nếu nó có C++ thay vì C API.

Tôi cần trình duyệt được nhúng này chủ yếu vì tôi gặp khó khăn khi tìm trình phân tích cú pháp HTML C++ có thể xử lý HTML bị hỏng như trình duyệt.
Nếu bạn biết, vui lòng trả lời Library Recommendation: C++ HTML Parser SO câu hỏi hoặc ít nhất bỏ phiếu cho câu hỏi đó để tăng cơ hội ai đó sẽ đưa ra câu trả lời hay.

+2

Bạn thực sự cần chỉ định nền tảng này là dành cho. Một cái gì đó có thể là một lựa chọn tốt trên Windows không nhất thiết phải có sẵn trên OS X chẳng hạn. – ChrisInEdmonton

+0

Nó dành cho Windows. Tôi đã thêm thông tin này vào câu hỏi. Cảm ơn vì đã phát hiện ra điều này. –

Trả lời

7

Tôi hơi bối rối bởi câu hỏi của bạn về việc nhúng trình duyệt web mà bạn không cần khả năng hiển thị. Trình duyệt web hiển thị các trang web theo định nghĩa, trừ khi bạn chỉ cần HTTP và XML với các khả năng JavaScript, đó là một tập con của các chức năng trình duyệt?

Nếu bạn cần trình duyệt web nhúng trong ứng dụng C++ của mình, tôi khuyên bạn nên xem xét Qt đi kèm với plugin WebKit. Nó là C++, LGPL và có một IDE rất đẹp (Qt Creator). Tôi đã thử Qt với Qt Creator trên Unix (Ubuntu) và nó rất ấn tượng. Trình gỡ lỗi hơi sáng nhưng nó chỉ là phiên bản đầu tiên. Bộ chuyển đổi của Qt thành hình ảnh C++ 2008 hiện đã miễn phí.

+0

Vâng, tôi cần trình phân tích cú pháp HTTP, cookie, HTML (không phải XML!) Và JavaScript. Tôi đã thêm tất cả những câu hỏi này để làm cho nó rõ ràng hơn :) –

+0

Sau đó tôi sẽ đề nghị sử dụng webkit vì nó khá hiệu quả, đặc biệt là trình giải thích JavaScript. Chỉ cần sử dụng các chức năng mà bạn quan tâm. – chmike

8

Âm thanh giống như tất cả những gì bạn cần là một thứ như libcurl là thư viện HTTP và sẽ cho phép bạn thực hiện GET/POST/v.v.

Khi tôi nghĩ trình duyệt, tôi thường nghĩ rằng hiển thị/JavaScript chứ không phải thư viện HTTP.

Sửa

Trong trường hợp đó tôi muốn nhìn vào WebKit (mà tôi nghĩ có một C++ API) và hy vọng bạn không cần phải kéo quá nhiều trong.

Sửa lần nữa Khi suy nghĩ thứ hai (vì hiển thị là một phần quan trọng trong những gì trình duyệt làm), bạn nên sử dụng một công cụ JS độc lập như SpiderMonkey và trình phân tích cú pháp XML độc lập như Xerces-C (cộng với có thể là 0123).để biến HTML của bạn thành XML).

+0

Vì vậy, tôi nói chung. –

+0

Tôi đã sử dụng nó. Tôi cần JavaScript engine và html parser và libcurl không có những thứ này. –

+4

Nó sẽ là hợp lý để liệt kê những yêu cầu trong câu hỏi. –

2

Làm thế nào về Gecko? Bạn có thể không cần toàn bộ động cơ nhưng bạn có thể tìm thấy một số thành phần của nó hữu ích như SpiderMonkey là một công cụ JavaScript được viết bằng C.

3

Bao gồm hỗ trợ javascript và phân tích cú pháp html làm nhiệm vụ không tầm thường này - bạn phải sử dụng một trong các các trình duyệt có sẵn.

  • IE có thể sử dụng thông qua mô hình COM - bạn có thể tạo thể hiện của nó trong cửa sổ của bạn là ẩn hoặc không và gọi khả năng javascript/html của nó.

Nó đã được thiết kế để được sử dụng như thế ngay từ đầu và chắc chắn nó hoạt động tốt.

Các tùy chọn khác bao gồm:

  • Gecko/Mozilla - một vài năm trước đây nó đã không sử dụng được như thế này, hiện nay tôi nghĩ rằng đó là.

  • WebKit/V8 - chưa có API công khai nào được phát hành cho chrome, bạn có thể sử dụng webkit, nhưng không có công cụ javascript. Một tùy chọn khác là xem mã codebase của Chrome và xem liệu bạn có thể thoát khỏi điều bạn cần không.

Tôi có thể truy cập IE vì đây có lẽ là lựa chọn dễ dàng nhất và tôi đã sử dụng nó. Các tùy chọn khác dường như với tôi giống như xây dựng một trình duyệt thay vì chỉ sử dụng nó.

2

Tôi khuyên bạn nên chọn lập Qt cho lập trình C++. Nó có một thư viện được xây dựng trong đó embeds Webkit với tất cả các bells'n'whistles, và Qt là một thư viện C++ tuyệt vời nói chung.

3

Bạn cũng có thể muốn xem Awesomium - miễn phí cho mục đích phi thương mại và có tất cả các tính năng bạn đang tìm kiếm (nếu bạn không cần hiển thị, chỉ đơn giản là không sử dụng nó).

+0

Câu hỏi cũ tôi biết, nhưng tôi đang tìm kiếm chính xác điều tương tự như OP. Bạn trả lời đã giúp tôi rất nhiều. Cảm ơn bạn! – William

0

Cũ câu hỏi, tôi biết, nhưng có một cái nhìn vào http://msdn.microsoft.com/en-us/library/ky29ffxd%28v=vs.94%29.aspx

IActiveScript và COM gia đình giao diện cho phép thực hiện kịch bản (không chỉ JS, bất kỳ ngôn ngữ sẽ ghi lại là kịch bản interpeter, cho rằng vấn đề) trong bộ nhớ.

3

Có một dự án có tên CEF = The Chromium Embedded Framework - đó là:

trình duyệt

một khung đơn giản cho cách nhúng Chromium dựa trên các ứng dụng khác. Đây là dự án mã nguồn mở được cấp phép BSD do Marshall Greenblatt thành lập năm năm 2008 và dựa trên dự án Google Chromium. Không giống như dự án Chromium , chủ yếu tập trung vào việc phát triển ứng dụng Google Chrome , CEF tập trung vào việc tạo điều kiện cho các trường hợp sử dụng trình duyệt nhúng trong các ứng dụng của bên thứ ba là .

và yes:

Các cơ sở khung CEF bao gồm hỗ trợ cho C và C++ lập trình ngôn ngữ.

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