Как я могу прочитать обработанный HTML-код текущей страницы в Internet Explorer с помощью C #? - PullRequest
2 голосов
/ 02 марта 2012

Я проверил различные вопросы, касающиеся доступа к веб-сайтам с помощью c #.Однако мой вопрос немного другой.Можно ли прочитать открытую в настоящее время страницу в Internet Explorer с помощью кода на c #?

Идея состоит в том, чтобы в c # было установлено отдельное приложение, которое наблюдает за текущей страницей IE.Поэтому вместо того, чтобы обращаться к странице внутри приложения, я просто хочу увидеть, какая страница открыта, и прочитать в ней отрендеренный html.

Ответы [ 4 ]

1 голос
/ 02 марта 2012

попробуйте этот код:

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

Импортируйте эти два пространства имен:

using System.Net;
using System.IO;
0 голосов
/ 02 марта 2012

Я бы посоветовал вам перечислить ваши окна IE и затем извлечь из них контент. Что-то вроде этого. Импорт WinAPI-символов для использования в управляемом коде C #:

    [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 из окна. Но я не знаю как:)

0 голосов
/ 02 марта 2012

Звучит сложно.Я не знаю, в чем смысл вашего заявления.Итак, мне приходят в голову некоторые идеи:

Вы можете попробовать сниффер .Это может работать по крайней мере для незашифрованных соединений.Так быстро и грязно: используйте сниффер, чтобы узнать целевую страницу, снова вызовите страницу в вашем приложении, используя, например, класс WebBrowser, и получите «визуализированный HTML» (вы имеете в виду «внутренний HTML»?) Отдельно.

Может быть, он также работает через IE плагин , который передает HTML в ваше приложение?

0 голосов
/ 02 марта 2012

Я не думаю, что вы можете общаться с IE из отдельного приложения.

Вы можете встроить поток ответа HTTP-запроса в приложение, которое вы пишете, или даже встроить браузер в приложение. Я сделал нечто подобное, используя браузер Chromium, который фактически копирует Chrome.

Никогда не делал это для IE

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...