2012-03-02 4 views
2

私はC#を使用してウェブサイトにアクセスする際に異なる質問を確認しました。しかし、私の質問は少し異なります。 c#コードを使用してInternet Explorerで現在開いているページを読むことは可能ですか?C#を使用してInternet Explorerで現在のページのレンダリングされたHTMLを読むにはどうすればよいですか?

アイデアは、現在開いているIEページを観察するスタンドアロンアプリケーションをC#で使用することです。だから、アプリケーションの内部でページにアクセスするのではなく、開いているページを見て、そこにレンダリングされたhtmlを読むだけです。

+0

これは、クライアントアプリであることを行っているのか分からないのですか? – Brian

+0

現在レンダリングされているページのhtmlを読むことができます。しかし、 "レンダリングされた" htmlを読むことはできません。おそらく必要なのは、実際のページのオブジェクトモデルにアクセスすることです。 –

+1

これは、IEの開発ツールは何ですか? –

答えて

1

は、このコードを試してみてください。私はあなたが別のアプリケーションからのIEと通信することができないと思います

using System.Net; 
using System.IO; 
+1

ザ・OPはすでにオープンIEのインスタンスからDOMを読み込むについて尋ねています。あなたの答えはそれのどれもしません。 –

0

static string GetHtmlPage(string strURL) 
{ 

    String strResult; 
    WebResponse objResponse; 
    WebRequest objRequest = HttpWebRequest.Create(strURL); 
    objResponse = objRequest.GetResponse(); 
    using (StreamReader sr = new StreamReader(objResponse.GetResponseStream())) 
    { 
    strResult = sr.ReadToEnd(); 
    sr.Close(); 
    } 
    return strResult; 
} 

は、これら2つの名前空間をインポートします。あなたが書くアプリケーションにHTTPリクエスト・レスポンスストリームを埋め込む、あるいはアプリケーションにブラウザを埋め込むことができ

、私が実際にChromeを複製クロムブラウザを使用して、類似した何かをやりました。

IEのために決してしなかった

0

音がトリッキー。私はあなたのアプリケーションのポイントが何か分かりません。 だから、ちょっとしたアイデアが私の頭に浮かぶ:

snifferを試すことができます。少なくとも暗号化されていない接続ではこれが有効です。 クイックアンドダーティ:スニッファを使用してターゲットページを見つけ、アプリケーションでページを再度呼び出します。 WebBrowserクラスを使用して、「レンダリングされたHTML」(「内部HTML」を意味しますか?)を別に取得します。

多分、あなたのアプリケーションにhtmlを渡すIE pluginで動作しますか?

0

私はあなたのIEのウィンドウを列挙した後、そこからコンテンツを抽出することをお勧めしたいです。このようなSmth。マネージドC#コードで使用するためにインポートWinAPIのはF-ション:

[DllImport("user32.dll", SetLastError = true)] 
    public static extern IntPtr FindWindowEx(IntPtr parentHandle, IntPtr childAfter, string className, IntPtr windowTitle); 

    [DllImport("user32.dll", CharSet = CharSet.Auto, SetLastError = true)] 
    static extern int GetWindowText(IntPtr hWnd, StringBuilder lpString, int nMaxCount); 

そして単純なリストにそれら:

StringBuilder sb = new StringBuilder(1024); 
    // Loop all parent windows 
    while((hWindow = FindWindowEx(IntPtr.Zero, hWindow, null, IntPtr.Zero)) != IntPtr.Zero) 
    { 
     GetWindowText(hWindow, sb, sb.MaxCapacity); 
     // Interested in Chrome only :) 
     if(sb.ToString().Contains("Google Chrome")) 
     { 
      Console.WriteLine(sb.ToString()); 
     } 
    } 

その後、あなたは窓からHTMLを抽出する必要があります。しかし、私は:)

関連する問題