簡體   English   中英

在沒有C#Webbrowser控件的情況下控制Web瀏覽器

[英]Controlling a webbrowser without c# webbrowser control

我希望能夠啟動多個瀏覽器窗口並從中獲取html並與它們進行交互,就像使用.net Web瀏覽器控件一樣。 問題是c#Web瀏覽器控件需要STA線程,這會使我的程序變慢並且容易出錯。 他們是我可以與真正的IE瀏覽器甚至Chrome,Firefox等交談的一種方式嗎?

我知道有付費的第三方解決方案和東西,但我想知道是否有人知道任何可靠且有效的免費庫。 我不能將HttpWebRequest用於我正在做的事情,所以請不要建議。

我將在Windows上運行並使用C#。

我已經使用過WebKit.NET。 它是免費的,而且效果很好(支持Flash,CSS,正確呈現,具有JavaScript引擎)。 它可能對您正在做的事情有廣泛的影響,也可能沒有。

http://webkitdotnet.sourceforge.net/

有很多指南,該演示具有功能齊全的選項卡系統。

編輯:我在鬼混,並制作了演示的增強版本

在此處輸入圖片說明

Awesomeium是一個基於Webkit / Chromium(Chrome)的瀏覽器,您可以通過.NET包裝器與之交談,就像WebBrowser控件一樣。 我不確定STA線程要求。

至於STA Threading,使您的應用程序“更慢且更容易出錯”-聽起來很奇怪,也許您應該研究解決問題的方法。

對於IE(僅)。 免費:Microsoft Internet控件

using SHDocVw;

Microsoft HTML對象庫

using mshtml;

有了這些,您可以做類似的事情

foreach (InternetExplorer brIns in _allWindows)
            {
                var htmlDoc = brIns.Document as HTMLDocument;
                if (htmlDoc != null && htmlDoc.all.item(elementName) != null)
                {
                    var elem = htmlDoc.all.item(elementName) as HTMLInputElement;
                    if (elem != null && attributeName == null)
                    {
                        _ieCurrentDoc = htmlDoc;
                        _currentHtml = htmlDoc.documentElement.outerHTML;
                        return true;
                    }
                    if (elem != null && elem.getAttribute(attributeName) != null)
                    {
                        _ieCurrentDoc = htmlDoc;
                        _currentHtml = htmlDoc.documentElement.outerHTML;
                        return true;
                    }

                }
            }

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM