Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Общие вопросы по .NET и C# > Получение DOM из чужого браузера.


Автор: ErManDir 8.9.2013, 18:16
Здравствуй, глубокоуважаемый All! Задался целью управлять DOM-Моделью некоего ресурса.
Знаю, что могу легко получить нужное через свой WebBrowser. Но хочу, все ж, прицепиться к окошку Хрома или Файрфокса.
Соответственно интересует: Можно ли это сделать через Chrome, Firefox, ну и для кучи IE (в меньшей степени); или эти процессы не отдадут мне DOMМодель?

Автор: jonie 9.9.2013, 13:59
Цитата(ErManDir @  8.9.2013,  19:16 Найти цитируемый пост)
Соответственно интересует: Можно ли это сделать через Chrome, Firefox, ну и для кучи IE (в меньшей степени); или эти процессы не отдадут мне DOMМодель? 

сделай AddIn и (в зависимости от браузера) как-то получай эту самую "DOM модель".

Для IE можно прицепиться через Automation к текущему экземпляру IHtmlDocument (через транспаретную прокси) (http://support.microsoft.com/kb/249232)

Автор: ErManDir 9.9.2013, 18:05
Цитата(jonie @  9.9.2013,  13:59 Найти цитируемый пост)
сделай AddIn и (в зависимости от браузера) как-то получай эту самую "DOM модель".

Вы имеете ввиду создание надстройки для Браузера, чтобы эта надстройка передавала структуру любым доступным путём? Хоть через файл?

По поводу IE, спасибо за ответ, я тоже нашел вариант, работающий путем подключения к проекту ссылки на COM Microsoft Internet Controls. А потом, собственно:
Код

        //Поиск нужной вкладки IE по URL
        public static IHTMLDocument2 GetDOMObject(string URL)
        {
            SHDocVw.ShellWindows shellWindows = new SHDocVw.ShellWindows();
            string filename;
            foreach (SHDocVw.InternetExplorer ie in shellWindows)
            {
                filename = System.IO.Path.GetFileNameWithoutExtension(ie.FullName).ToLower();

                if (filename.Equals("iexplore"))
                {
                    if  (ie.LocationURL == URL) return ie.Document as mshtml.IHTMLDocument2;
                }
            }
            return null;
        }

Автор: jonie 9.9.2013, 20:50
Цитата(ErManDir @  9.9.2013,  19:05 Найти цитируемый пост)
работающий путем подключения к проекту ссылки на COM Microsoft Internet Controls. 

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

Автор: ErManDir 10.9.2013, 05:43
Цитата(jonie @  9.9.2013,  20:50 Найти цитируемый пост)
давайте вы сначала изучите все же что в вашем примере происходит, а уж потом такой бред писать не будете... 

Не понимаю о чем вы. Вроде всё в этом коде тривиально.

А по поводу вопроса про AddIn:
Цитата(jonie @  9.9.2013,  13:59 Найти цитируемый пост)
сделай AddIn и (в зависимости от браузера) как-то получай эту самую "DOM модель".

Цитата(ErManDir @  9.9.2013,  18:05 Найти цитируемый пост)
Вы имеете ввиду создание надстройки для Браузера?

Ответьте, плиз.

Автор: jonie 10.9.2013, 10:40
Цитата(ErManDir @  10.9.2013,  06:43 Найти цитируемый пост)

Не понимаю о чем вы. Вроде всё в этом коде тривиально.

зато в комментарии к нему бардак.

Цитата(ErManDir @  10.9.2013,  06:43 Найти цитируемый пост)
Вы имеете ввиду создание надстройки для Браузера?

да.
вы также можете внедрить просто javascript на страницу и использовать возможности вроде "поднять у себя веб сервер (например подняв SignalR Self Host как сделали в VS2013 для отладки) и обращаться к нему из javascript-та"...

Автор: ErManDir 10.9.2013, 10:58
Спасибо, за ответы, вопрос закрыт.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)