Картинки в WebBrowser

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
Scorry_1
Обычный пользователь
Обычный пользователь
 
Сообщения: 56
Зарегистрирован: 10.11.2005 (Чт) 11:11
Откуда: Находка

Картинки в WebBrowser

Сообщение Scorry_1 » 14.11.2005 (Пн) 6:38

Доброе время суток.
Задачу перед собой поставил такую:
при навигации в WebBrowser не должны загружаться картинки, затем переписываются все тыги <img> - заменяется src = "c:/image/" & src, и только тогда картинки в WebBrowser открываются (получается уже с диска). Подскажите, возможно ли такое, а главное как? :) если не трудно, то объясните на пальцах...

Scorry_1
Обычный пользователь
Обычный пользователь
 
Сообщения: 56
Зарегистрирован: 10.11.2005 (Чт) 11:11
Откуда: Находка

Сообщение Scorry_1 » 15.11.2005 (Вт) 14:15

Ну что, никто не знает? :(
пожет быть тогда подскажете как при нажатии в WebBrowser на ссылку передавать команду эту ссылку качать в Inet?

Alexanbar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1727
Зарегистрирован: 13.04.2004 (Вт) 23:04
Откуда: Волгоградская обл.

Сообщение Alexanbar » 15.11.2005 (Вт) 18:00

Почему же никто?

Во-первых, не очень понятна задача.

В своё время я делал сохранение страницы на диск с конвертацией ссылок.
Делал исключительно путём поиска соответствующих строк с помощью ф-ции Instr и замены глобальных ссылок на локальные. В то время я ничего не знал о DOM. Возможно, что можно как-то заменять ссылки непосредственно, используя объекты DOM.

pitbull
Постоялец
Постоялец
 
Сообщения: 314
Зарегистрирован: 25.06.2004 (Пт) 15:37
Откуда: Кемерово

Сообщение pitbull » 15.11.2005 (Вт) 19:49

2Alexanbar Какой DOM? Первый или второй??? :P

p.s. Мне казалось что это называется COM...., tj как говорит наш лектор: "я могу ошибаться..."

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 15.11.2005 (Вт) 19:59

DOM доступен посредством COM, pitbull, да...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

Alexanbar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1727
Зарегистрирован: 13.04.2004 (Вт) 23:04
Откуда: Волгоградская обл.

Сообщение Alexanbar » 15.11.2005 (Вт) 21:44

pitbull писал(а):2Alexanbar Какой DOM? Первый или второй??? :P

p.s. Мне казалось что это называется COM...., tj как говорит наш лектор: "я могу ошибаться..."


Document Object Model. См. MSDN

Document Property Internet Development Index

--------------------------------------------------------------------------------

Retrieves the automation object of the active document, if any.

Syntax

[ oAutomation = ] object.Document
Possible Values

oAutomation Object that receives the automation object.

The property is read-only. The property has no default value.

Remarks

When the active document is an HTML page, this property provides access to the contents of the HTML Document Object Model (DOM). Specifically, it returns an HTMLDocument object reference. The HTMLDocument object is functionally equivalent to the HTML document object used in HTML page script. It supports all the properties and methods necessary to access the entire contents of the active HTML document.

Microsoft® Visual Basic® programs that early bind to the HTMLDocument object can reference it through the IHTMLDocument, IHTMLDocument2, and IHTMLDocument3 interfaces.


pitbull
Постоялец
Постоялец
 
Сообщения: 314
Зарегистрирован: 25.06.2004 (Пт) 15:37
Откуда: Кемерово

Сообщение pitbull » 15.11.2005 (Вт) 22:35

Э][.....

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 15.11.2005 (Вт) 22:48

pitbull, не делай, пожалуйста, бессмысленных постов

Scorry_1
Обычный пользователь
Обычный пользователь
 
Сообщения: 56
Зарегистрирован: 10.11.2005 (Чт) 11:11
Откуда: Находка

Сообщение Scorry_1 » 16.11.2005 (Ср) 2:31

Alexanbar, объясняю задачу: уменьшить входящий трафик с помощью НЕ закачиванья изображений с удаленного сервера, а закачивая их со своего жесткого диска.

Что такое DOM и COM?

SeT
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 362
Зарегистрирован: 29.12.2004 (Ср) 13:11

Сообщение SeT » 16.11.2005 (Ср) 17:12

В броузере всё делается так, как в HTML. Можно в HTML, значит можно и в браузере.
01000100
Причиняет боль 0010
Виртуальная любовь 00100
Индустрия снов 0010

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 16.11.2005 (Ср) 17:23

Scorry_1 писал(а):Alexanbar, объясняю задачу: уменьшить входящий трафик с помощью НЕ закачиванья изображений с удаленного сервера, а закачивая их со своего жесткого диска.

Я бы посоветовал для этих целей не писать свою программу, а заюзать прокси-сервер, например Proxomitron.
Lasciate ogni speranza, voi ch'entrate.

Alexanbar
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1727
Зарегистрирован: 13.04.2004 (Вт) 23:04
Откуда: Волгоградская обл.

Сообщение Alexanbar » 16.11.2005 (Ср) 17:44

Scorry_1 писал(а):Alexanbar, объясняю задачу: уменьшить входящий трафик с помощью НЕ закачиванья изображений с удаленного сервера, а закачивая их со своего жесткого диска.

Что такое DOM и COM?


Используй Opera. Один раз закачаешь картинки, а далее они будут браться из кэша. Вот я хочу такое сделать для IE, но пока некоторые вопросы остались нерешёнными.

А DOM - это объект с набором свойств и методов. Доступ к этому объекту осуществляется, например, через своство контрола webbrowser.Document. Одно замечание: VB не даёт подсказку на свойства и методы объекта Document.

Scorry_1
Обычный пользователь
Обычный пользователь
 
Сообщения: 56
Зарегистрирован: 10.11.2005 (Чт) 11:11
Откуда: Находка

Сообщение Scorry_1 » 16.11.2005 (Ср) 18:21

Alexanbar, да я давольно часто использовал в своих программах webbrowser.Document, просто не знал, к какому объекту эти свойства относятся :).

не подскажете кто-нибудь, есть ли русскоязычный ресурс, где подробно описывают если не все, то хтыбы самые популярные свойства webbrowser.Document?

Firestorm
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 946
Зарегистрирован: 02.05.2002 (Чт) 14:36
Откуда: Russia

Сообщение Firestorm » 17.11.2005 (Чт) 3:20

случаем решил сделать не закачивалку сайтов? :lol:
вот например код, как скачать файл с инета, дальше переделывай ссылки на картинки... картинки тоже качаются таким методом :D
Код: Выделить всё
Private Declare Function URLDownloadToFile Lib "urlmon" Alias "URLDownloadToFileA" (ByVal pCaller As Long, ByVal szURL As String, ByVal szFileName As String, ByVal dwReserved As Long, ByVal lpfnCB As Long) As Long

Public Function DownloadFile(URL As String, LocalFilename As String) As Boolean
    Dim lngRetVal As Long
    lngRetVal = URLDownloadToFile(0, URL, LocalFilename, 0, 0)
    If lngRetVal = 0 Then DownloadFile = True
End Function

Private Sub Form_Load()
    DownloadFile "http://www.yandex.ru", "c:\yandex.htm"
End Sub
...просто гламурный падонак...
_________________
reborn! v.2 :twisted:
_________________

Scorry_1
Обычный пользователь
Обычный пользователь
 
Сообщения: 56
Зарегистрирован: 10.11.2005 (Чт) 11:11
Откуда: Находка

Сообщение Scorry_1 » 17.11.2005 (Чт) 5:07

Firestorm, нет, решил сделать простенького киента для сетевой текстовой мморг игрухи :). код сохранил, спасибо :)

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2054
Зарегистрирован: 25.11.2002 (Пн) 20:03

Сообщение ALX_2002 » 17.11.2005 (Чт) 13:40

Отцы ! Да вы чего паритесь то ! Всё ж просто :D

Жаль, что я раньше сюда не заглянул.

Вот
Вложения
VBP.zip
В примере загружается сайт. И по концу загрузки у всех картинок SRC заменяется C:\images\имя картинки
(1.85 Кб) Скачиваний: 101

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2054
Зарегистрирован: 25.11.2002 (Пн) 20:03

Сообщение ALX_2002 » 17.11.2005 (Чт) 13:46

Да. А вот исходный код на всякий случай.

Код: Выделить всё
Dim HDOCUMENT As New HTMLDocument
Dim IMG As HTMLImg
Private Sub Form_Activate()
MsgBox "Дождись полной загрузки документа"
WB.Navigate "www.rubank.ru"
End Sub

Private Sub Form_Resize()
WB.Move 0, 0, ScaleWidth, ScaleHeight
End Sub
Private Sub WB_ProgressChange(ByVal Progress As Long, ByVal ProgressMax As Long)
If WB.Document.ReadyState = "complete" Then
'Получаем документ из WEB браузера
Set HDOCUMENT = WB.Document

For Each IMG In HDOCUMENT.getElementsByTagName("IMG")
  'Получаем SRC картинки
  IMGSRC = IMG.src
  'Отрезаем имя файла
  IMGSRC = Right(IMGSRC, Len(IMGSRC) - InStrRev(IMGSRC, "/"))
  'Подставляем новый путь
  IMGSRC = "C:\images\" & IMGSRC
  'Устанавливаем новый путь в SRC картинки
  IMG.src = IMGSRC
Next

End If
End Sub


Для того, чтобы проект заработал нужно

1) Подключить shdocvw.oca и mshtml.tlb

2) На форме разместить WebBrowser и переименовать его в WB

Вот вроде и всё. :)

Scorry_1
Обычный пользователь
Обычный пользователь
 
Сообщения: 56
Зарегистрирован: 10.11.2005 (Чт) 11:11
Откуда: Находка

Сообщение Scorry_1 » 17.11.2005 (Чт) 14:23

ALX_2002, большое спасибо - части этого кода мне помогут в будущем, но вот в чем дело: написанная тобой програма переписывает src изображений уже после того, как картинки с сервера были закачаны и, следовательно, полный объем трафика был сохранен. Идея же втом, чтобы поймать момент, когда html текст станицы был уже закачан, а img еще не запрашивались с сервера. Если в этот момент переписать адреса рисунков в тэгах, то входящий трафик будет уменьшен - этои есть основная задача :).

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2054
Зарегистрирован: 25.11.2002 (Пн) 20:03

Сообщение ALX_2002 » 17.11.2005 (Чт) 16:10

Усёк. Сейчас сообразим :)

А всё просто поменяй

If WB.Document.ReadyState = "complete" Then

на

If WB.Document.ReadyState = "interactive" Then

:roll:

Scorry_1
Обычный пользователь
Обычный пользователь
 
Сообщения: 56
Зарегистрирован: 10.11.2005 (Чт) 11:11
Откуда: Находка

Сообщение Scorry_1 » 17.11.2005 (Чт) 16:49

ALX_2002, класс!!! :) огромное и даже ОГРОМНОЕ СПАСИБО!!!!!!!! :)

ALX_2002
Мега гуру
Мега гуру
 
Сообщения: 2054
Зарегистрирован: 25.11.2002 (Пн) 20:03

Сообщение ALX_2002 » 17.11.2005 (Чт) 17:02

Стоп ! Стоп ! :oops: Погоди чел ! Я ошибся. Ща переделаем :)

Scorry_1
Обычный пользователь
Обычный пользователь
 
Сообщения: 56
Зарегистрирован: 10.11.2005 (Чт) 11:11
Откуда: Находка

Сообщение Scorry_1 » 22.11.2005 (Вт) 16:25

ALX_2002, ну что не выходит? У меня тоже... :( Никак не могу подобрать нужное событие...



А можно как-то прописать свое событие для объекта? Как это сделать?

Шнурок
Постоялец
Постоялец
 
Сообщения: 371
Зарегистрирован: 12.11.2004 (Пт) 19:28
Откуда: Санкт-Петербург

Сообщение Шнурок » 07.12.2005 (Ср) 3:40

Меня тоже этот вопрос мучает...
Только мне нужно немного по другому сделать:
Отправляется запрос из webbrowser (урл), если урл=*yandex.ru то не грузить картинки а взять их из каталога с exeшником.
Не подскажите как такое можно сделать? Зарание спасибо!
02.01.2004

RUSYA
Обычный пользователь
Обычный пользователь
 
Сообщения: 84
Зарегистрирован: 22.07.2005 (Пт) 20:17
Откуда: Харьков

Сообщение RUSYA » 12.12.2005 (Пн) 0:22

пример замены img есть, а в BeforeNavigate смотреть урл и есть, то...
А как оно на самом деле - Х.З. !

vvs_adm
Гуру
Гуру
Аватара пользователя
 
Сообщения: 1492
Зарегистрирован: 03.02.2005 (Чт) 3:45
Откуда: оттуда ;)

Сообщение vvs_adm » 12.12.2005 (Пн) 0:47

RUSYA писал(а):пример замены img есть, а в BeforeNavigate смотреть урл и есть, то...
Ага, и если есть, то... ждать, пока Scorry_1 и ALX_2002 найдут таки нужное событие :mrgreen: :mrgreen:
Никогда не откладывай на завтра то, что можно ... отложить на послезавтра!

Шнурок
Постоялец
Постоялец
 
Сообщения: 371
Зарегистрирован: 12.11.2004 (Пт) 19:28
Откуда: Санкт-Петербург

Сообщение Шнурок » 12.12.2005 (Пн) 3:46

Я кажись нашел как картинки вообще не грузить:
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/vnd.ms-powerpoint, */* - не обязательная, указывает, что мы принимаем (Типа грузим картинки всякие или нет)
02.01.2004

Scorry_1
Обычный пользователь
Обычный пользователь
 
Сообщения: 56
Зарегистрирован: 10.11.2005 (Чт) 11:11
Откуда: Находка

Сообщение Scorry_1 » 12.12.2005 (Пн) 4:46

Шнурок, это только если напишишь локальный прокси и будешь отслеживать какие запросы броузет отправляет ;).

http://bbs.vbstreets.ru/viewtopic.php?t=21649

Шнурок
Постоялец
Постоялец
 
Сообщения: 371
Зарегистрирован: 12.11.2004 (Пт) 19:28
Откуда: Санкт-Петербург

Сообщение Шнурок » 13.12.2005 (Вт) 3:21

Scorry_1 а можно ли как-нибудь через винсок отправлять GET .... ???
А потом слушать когда придет ответ и преобразовыввать полученный текст в html...
З.Ы. это просто мысль... я во всем этом чайник(
02.01.2004


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот, Mail.ru [бот], Yandex-бот и гости: 71

    TopList