Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Сети > Дублирование WB


Автор: Xenofibrius 21.6.2008, 18:45
Всем привет!
Такая вот тема: в "фоновом" режиме закачивается определенная страница в компонент TWebBrowser. 
   Фоновый режим - компонент на форме размером 0,0 с bsNone стилем (если кто знает, подскажите, как сделать по человечески? Надо закачать страницу на невидимой форме и проверить, что конец закачки, с READYSTATE_COMPLETE не получилось) ((. 
   Далее с этого WB надо перекинуть скаченную страницу на браузер лицевой формы, который видим. Метод WB1.Assign(WB2) дает ошибку. Подскажите, пожалуйста, как тут быть? Надо скопировать не только HTML, но и картинки, и стили и т.д.

Автор: MetalFan 21.6.2008, 20:20
использовать WB для фоновой загрузки страницы... имхо не очень хорошая идея.
есть несколько менее ресурсоемких способов. (idHTTP, WinInet, WinHTTP, UrlMon, etc...)
а примеров, как загрузить полученную страничку в WB, в сети и на этом форуме валом.

Автор: Xenofibrius 21.6.2008, 21:07
MetalFan, а смысл предварительной скачки при использовании предложенных дополнительных способов?
Скачка фоновая - это ее главная задача! При использовании, к примеру, idHTTP - скачаем код, а как закачать картинки, css, js? Парсить и скачивать все по отдельности, а потом подменять? ИМХО, гораздо более геморойный способ.
Необходимо скопировать область данных из одного WB в другой, все данные, а не только HTML, причем не через файл! Не просто так же в TWebBrowser определен метод Assign. Мне кажется через Stream можно сделать, ток у меня не получается все никак  smile 

Автор: MetalFan 22.6.2008, 00:49
Assign для WB видимо не прокатит. можно включить второму WB режим чтения из кэша (aka Offline Mode).... и по идее после обращения второго WB к той же странице она подгрузица из кэша. или целиком сохранить страницу в один файл(веб-архив aka mht) и потом из него загрузить....

Автор: Xenofibrius 22.6.2008, 02:31
Если там капча или AJAX, то метод с кешем не катит! Да может и не кешится страница по настройкам. 
Про сохранение - получается сохранить только текст, всю страницу пока не хочет :(

Автор: MetalFan 22.6.2008, 08:45
тогда попробуй через mht (http://delphi.about.com/od/internetintranet/l/aa062904a.htm).
хотя тут наверное будет то же, что и с кэшем

Автор: Xenofibrius 22.6.2008, 20:11
Спасибки! Откуда достать CDO_TLB прочитал там же, но он требует еще и ADODB_TLB - а вот это где взять?

Автор: MetalFan 22.6.2008, 21:51
так там в конце статьи написано, откуда взять

Автор: Xenofibrius 22.6.2008, 22:41
Конец статьи:

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 22.6.2008, 23:05
О, шикарно, все заработало! ADODB_TLB лежит рядом с CDO_TLB (по умолчанию в $(BDS)\Imports). Все прекрасно работает.
Только вот, долго, файл размером в 60кб ((.  Спасибо огромное,  MetalFan! Кто знает способы не через файл, отпишитесь, очень надо ))

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