Экспертная система Delphi.int.ru

Сообщество программистов
Общение, помощь, обмен опытом

Логин:
Пароль:
Регистрация | Забыли пароль?

Delphi.int.ru Expert

Другие разделы портала

Переход к вопросу:

#   

Статистика за сегодня:  


Лучшие эксперты

Подробнее »



Вопрос # 1 119

Раздел: Delphi » Прочее
/ вопрос открыт /

Здравствуйте, уважаемые эксперты!
как отключить в WebBrowser загрузку картинок,
или как загрузить только html без ресурсов?

sansusan Вопрос ожидает решения (принимаются ответы, доступен мини-форум)

Вопрос задал: sansusan (статус: Посетитель)
Вопрос отправлен: 16 ноября 2007, 22:37
Состояние вопроса: открыт, ответов: 2.

Ответ #1. Отвечает эксперт: min@y™

Компонент TWebBrowser работает на движке Internet Explorer. Поэтому можно глобально отключить картинки в свойствах обозревателя.
Другой способ: закачивать HTML-код с сервера руками, удалить из него все img src="..." и уже потом отображать его в TWebBrowser или любом другом компоненте для отображения WEB-страниц.
Пару лет назад я написал для прикола прогу для скачивания страниц с удафкома :). Вот один метод класса, он закачивает только HTML-текст:

procedure THtmlDownloader.Execute;
var
  Buffer: array of Char;
  Success: Boolean;
  Readed, ReadedTotal: Cardinal;
begin
  FStatus:= 'Клянчу страницу ' + FURL + '...';
  DoOnStatus(False);
  FhFile:= InternetOpenUrl(FhInet,
                           PChar(FURL),
                           nil,
                           0,
                           INTERNET_FLAG_NO_COOKIES or INTERNET_FLAG_NO_CACHE_WRITE,
                           0);
 
  if FhFile = nil
    then begin
           FErrorCode:= deInternetProblem;
           Exit;
         end;
 
  SetLength(Buffer, FBufferSize);
 
  FStatus:= 'Заливаю страницу ' + FURL + '...';
  DoOnStatus(False);
 
  ReadedTotal:= 0;
  FTimer.Enabled:= True;
 
  repeat
    Success:= InternetReadFile(FhFile, @Buffer[0], Length(Buffer), Readed);
    if Success
      then FStream.Write(Buffer[0], Readed);
 
    Inc(ReadedTotal, Readed);
    FStatus:= 'Заливаю страницу ' + FURL + ' - [' + FileSize2Str(ReadedTotal) + ']';
    FDeltaSize:= Readed;
    DoOnStatus(False);
  until (Readed = 0) or not Success or MainForm.FCancelled;
 
  FTimer.Enabled:= False;
 
  if not Success
    then FErrorCode:= deInternetProblem;
end;

Весь файл uDownloader.pas я прицепляю к ответу. Если чего будет непонятно и/или требуется вся прога - пиши в форум.
К ответу прикреплён файл. Загрузить » (срок хранения: 60 дней с момента отправки ответа)

Ответ отправил: min@y™ (статус: Доктор наук)
Время отправки: 17 ноября 2007, 12:03

Ответ #2. Отвечает эксперт: Вадим К

Здравствуйте, sansusan!
Скачать страничку по хттп можно и проще. всего одной строкой. Правда если там https, то прийдётся намного больше, но таких страниц меньше.
Итак, ставим на форму комопнент idHttp (начитая с 6 делфи идёт в комплекте с делфи), а в обработчике кнопки(или кто там хочет скачать старничку) пишем такой код

s:=idhttp1.get('https://www.delphi-int.ru/');
и всё!
Правда бывает проблема с разделителями - некоторые сервера по линуксом используют не #13#10, а только #13 для разделения строк и Мемо (а также блокното) не могут отобразить красиво.
тут поможет ещё одна строка
s := ReplaceString(s,#13,#13#10,[rfReplaceall]);

Ответ отправил: Вадим К (статус: Академик)
Время отправки: 17 ноября 2007, 14:01


Мини-форум вопроса

Всего сообщений: 2; последнее сообщение — 17 ноября 2007, 12:33; участников в обсуждении: 2.
Dron

Dron (статус: Студент), 17 ноября 2007, 10:35 [#1]:

Если Вам нужно загрузить только "исходник" html-страницы, т.е. отображать страницу не нужно, то проще воспользоваться компонентами для HTTP-соединения (например, idHTTP из библиотеки Indy), чем использовать целый TWebBrowser. Уточните, пожалуйста, что именно требуется.
С уважением.
sansusan

sansusan (статус: Посетитель), 17 ноября 2007, 12:33 [#2]:

спасибо....
подсказали можно в IE картинки отключить через реестр
HKEY_CURRENT_USER
Software
Microsoft
InternetExplorer
Main
-> Display Inline Images (yes/no)

можно и много чего друго отключить
http://www.specinsoft.ru/

Чтобы оставлять сообщения в мини-форумах, Вы должны авторизироваться на сайте.

Версия движка: 2.6+ (26.01.2011)
Текущее время: 22 февраля 2025, 12:02
Выполнено за 0.03 сек.