0

複数のブラウザー ウィンドウを起動し、それらから html を取得して、.net Web ブラウザー コントロールと同じように操作できるようにしたいと考えています。問題は、c# Web ブラウザー コントロールには STA スレッドが必要であり、それによってプログラムが遅くなり、エラーが発生しやすくなります。それらは、実際の IE ブラウザや Chrome、Firefox などと対話してこれを行う方法ですか?

有料のサードパーティのソリューションなどがあることは知っていますが、信頼性が高く機能する無料のライブラリを誰かが知っているかどうか疑問に思っていました. 私がやっていることには HttpWebRequest を使用できないので、それを提案しないでください。

Windows で実行し、C# を使用します。

4

4 に答える 4

2

WebKit.NETを使用しました。その無料でうまく機能します(フラッシュ、cssをサポートし、正しくレンダリングし、javascriptエンジンを備えています)。それはあなたがしていることのために広範であるかもしれないし、そうでないかもしれません。

http://webkitdotnet.sourceforge.net/

たくさんのガイドがあり、デモにはフル機能のタブシステムがあります。

編集:私はそれをいじっていて、デモの拡張バージョンを作成しました

ここに画像の説明を入力してください

于 2012-07-03T00:39:53.900 に答える
1

Awesomeiumは、WebBrowser コントロールと同様に、.NET ラッパーを介して対話できる Webkit/Chromium (Chrome) ベースのブラウザーです。ただし、STA スレッドの要件についてはわかりません。

STA スレッディングによってアプリケーションが「遅くなり、エラーが発生しやすくなる」ということについては、これは奇妙に聞こえますが、おそらくこれを解決する方法を調査する必要があります。

于 2012-07-03T00:30:01.153 に答える
1

IE の場合 (のみ)。無料: Microsoft Internet Controls

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

                }
            }
于 2012-07-03T00:30:52.900 に答える
1

または別の Web ブラウザ コントロール: http://code.google.com/p/geckofx/

GeckoFX を使用して C# に Firefox ブラウザーを埋め込む

于 2012-07-03T02:40:50.823 に答える