![]() |
Модераторы: Snowy, Poseidon, MetalFan |
![]() ![]() ![]() |
|
Xenofibrius |
|
|||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 16.5.2008 Репутация: нет Всего: нет |
Всем привет!
Такая вот тема: в "фоновом" режиме закачивается определенная страница в компонент TWebBrowser. Фоновый режим - компонент на форме размером 0,0 с bsNone стилем (если кто знает, подскажите, как сделать по человечески? Надо закачать страницу на невидимой форме и проверить, что конец закачки, с READYSTATE_COMPLETE не получилось) ((. Далее с этого WB надо перекинуть скаченную страницу на браузер лицевой формы, который видим. Метод WB1.Assign(WB2) дает ошибку. Подскажите, пожалуйста, как тут быть? Надо скопировать не только HTML, но и картинки, и стили и т.д. |
|||
|
||||
MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 14 Всего: 128 |
использовать WB для фоновой загрузки страницы... имхо не очень хорошая идея.
есть несколько менее ресурсоемких способов. (idHTTP, WinInet, WinHTTP, UrlMon, etc...) а примеров, как загрузить полученную страничку в WB, в сети и на этом форуме валом. -------------------- There are always someone smarter than you... |
|||
|
||||
Xenofibrius |
|
|||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 16.5.2008 Репутация: нет Всего: нет |
MetalFan, а смысл предварительной скачки при использовании предложенных дополнительных способов?
Скачка фоновая - это ее главная задача! При использовании, к примеру, idHTTP - скачаем код, а как закачать картинки, css, js? Парсить и скачивать все по отдельности, а потом подменять? ИМХО, гораздо более геморойный способ. Необходимо скопировать область данных из одного WB в другой, все данные, а не только HTML, причем не через файл! Не просто так же в TWebBrowser определен метод Assign. Мне кажется через Stream можно сделать, ток у меня не получается все никак ![]() |
|||
|
||||
MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 14 Всего: 128 |
Assign для WB видимо не прокатит. можно включить второму WB режим чтения из кэша (aka Offline Mode).... и по идее после обращения второго WB к той же странице она подгрузица из кэша. или целиком сохранить страницу в один файл(веб-архив aka mht) и потом из него загрузить....
Это сообщение отредактировал(а) MetalFan - 22.6.2008, 00:49 -------------------- There are always someone smarter than you... |
|||
|
||||
Xenofibrius |
|
|||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 16.5.2008 Репутация: нет Всего: нет |
Если там капча или AJAX, то метод с кешем не катит! Да может и не кешится страница по настройкам.
Про сохранение - получается сохранить только текст, всю страницу пока не хочет :( |
|||
|
||||
MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 14 Всего: 128 |
тогда попробуй через mht (How to save a web page as HTML or MHT).
хотя тут наверное будет то же, что и с кэшем -------------------- There are always someone smarter than you... |
|||
|
||||
Xenofibrius |
|
|||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 16.5.2008 Репутация: нет Всего: нет |
Спасибки! Откуда достать CDO_TLB прочитал там же, но он требует еще и ADODB_TLB - а вот это где взять?
|
|||
|
||||
MetalFan |
|
|||
![]() Аццкий Сотона ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 3815 Регистрация: 2.10.2006 Где: Moscow Репутация: 14 Всего: 128 |
так там в конце статьи написано, откуда взять
Это сообщение отредактировал(а) MetalFan - 22.6.2008, 21:53 -------------------- There are always someone smarter than you... |
|||
|
||||
Xenofibrius |
|
|||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 16.5.2008 Репутация: нет Всего: нет |
Конец статьи:
Note 1: The _Stream class is defined in ADODB_TLB unit that you probably already have created. The IMessage and IConfiguration interfaces code from cdosys.dll library. CDO stands for Collaboration Data Objects - object libraries designed to enable SMTP Messaging. The CDO_TLB is an auto generated unit by Delphi. To create it, from the main menu select "Import Type Library", select "C:\WINDOWS\system32\cdosys.dll" then click the "Create unit" button. Переводится примерно как: Примечание 1: _Stream класс объявлен в ADODB_TLB юните, который вероятнее всего уже создан вами. Коды IMessage и IConfiguration интерфейсов находятся в cdosys.dll библиотеке. {CDO stands for Collaboration Data Objects - object libraries designed to enable SMTP Messaging. (Сложнопереводимая фраза) } CDO_TLB автоматически генерируемый Delphi юнит. чтобы его создать, из главного меню выберите "Import Type Library", выберите "C:\Windows\system32\cdosys.dll", и нажмите "Create unit" кнопку. CDO_TLB создал. Может я что-то не то перевел, а может неправильно, но из выше написано непонятно, откуда взять ADODB_TLB, если у меня его нет. Может знает кто, где он или как его создать? |
|||
|
||||
Xenofibrius |
|
|||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 16.5.2008 Репутация: нет Всего: нет |
О, шикарно, все заработало! ADODB_TLB лежит рядом с CDO_TLB (по умолчанию в $(BDS)\Imports). Все прекрасно работает.
Только вот, долго, файл размером в 60кб ((. Спасибо огромное, MetalFan! Кто знает способы не через файл, отпишитесь, очень надо )) |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Сети" | |
|
Запрещено: 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делится вскрытыми компонентами
Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Snowy, Poseidon, MetalFan. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Сети | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |