WebBrowser and IStream

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

WebBrowser and IStream

Сообщение codemaster » 24.10.2005 (Пн) 16:48

Доброе время суток

есть строка sHTML - содержит внутри себя код НTML
Код: Выделить всё
<html><body><h1>LOAD HTML!</h1><img src='img/check.gif' alt=''></body></html>


далее строку грузим в WebBrowser (обертка над MSIE ) посредством следующей процедуры
(пишу на память поэтому заранее извиняюсь)
Код: Выделить всё
Private Sub LoadHTMLToBrowser(ByVal oBS As IPersistStreamInit, ByVal Data As String)
Dim oStream As IStream
   Set oStream = CreateStreamOnHGlobal(0, True)
   Data = ChrW(&HFEFF) & Data
   oStream.Write ByVal StrPtr(Data), LenB(Data)
   oStream.Seek 0, 0
   oBS.Load oStream
End Sub

LoadHTMLToBrowser WB.Document, sHTML



все как бы здорово и хорошо читаем в WB текст 'LOAD HTML!' Но!
рисунки не отображаются на загруженной странице!
если посмотреть на свойста рисунка то видно что 'img src' меняется на
с 'img/check.gif' на 'about:blankimg/check.gif'
вследствии чего отлуп с отображением.
'
about:blank - default страница в MSIE но сдается дело не в этом.
'
Куда рыть?

Заранее спасибо
'

'
//<-
Mit freundlichen Grüßen
//->

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

Сообщение GSerg » 24.10.2005 (Пн) 16:56

Ну не знаю...

Я вот вместо этого жуткого кода написал WebBrowser1.Document.write "<html><body><h1>LOAD HTML!</h1><img src='img/check.gif' alt=''></body></html>", и у меня линки не нарушились...
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Re: WebBrowser and IStream

Сообщение tyomitch » 24.10.2005 (Пн) 19:02

codemaster писал(а):все как бы здорово и хорошо читаем в WB текст 'LOAD HTML!' Но!
рисунки не отображаются на загруженной странице!
если посмотреть на свойста рисунка то видно что 'img src' меняется на
с 'img/check.gif' на 'about:blankimg/check.gif'
вследствии чего отлуп с отображением.

Логично, что картинки с относительными путями не будут грузиться: ведь текущим урлом для контрола является именно about:blank. С какого сайта ты загрузил свой sHTML - он не имеет ни мальейшего понятия.
Выход - заменять все пути к картинкам на абсолютные.
Изображение

codemaster
Постоялец
Постоялец
Аватара пользователя
 
Сообщения: 604
Зарегистрирован: 13.02.2004 (Пт) 13:35

Re: WebBrowser and IStream

Сообщение codemaster » 24.10.2005 (Пн) 20:56

tyomitch писал(а):Выход - заменять все пути к картинкам на абсолютные.


Боюсь заменить пути к картинкам на абсолютные не получится

Предистория вопроса:

наша контора написала SIP сервер для заказчка.
модуль отчетов по биллингу реализованы как xml/xslt

все было пучком !
но вдруг администраторы заказчика "поправили" шаблоны добавив тег <img/>
(им очень захотелось "развеселить" скучные таблицы HTML %......%)

к сожалению от IStream по ряду причин тоже не отойти

интересно можно ли например "внушить" MSIE другой текущий URL ? т.е. не "about:blank"
//<-
Mit freundlichen Grüßen
//->

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Re: WebBrowser and IStream

Сообщение tyomitch » 24.10.2005 (Пн) 21:23

codemaster писал(а):
tyomitch писал(а):Выход - заменять все пути к картинкам на абсолютные.


Боюсь заменить пути к картинкам на абсолютные не получится

:?: :?:
Код: Выделить всё
sHTML = Replace(sHTML, "<img src=""", "<img src=""http://example.com/")




GSerg писал(а):Ну не знаю...

Я вот вместо этого жуткого кода написал WebBrowser1.Document.write "<html><body><h1>LOAD HTML!</h1><img src='img/check.gif' alt=''></body></html>", и у меня линки не нарушились...

Интересно, откуда у тебя контрол узнал, откуда грузить картинки? ;-)
Изображение

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

Сообщение GSerg » 24.10.2005 (Пн) 21:26

Картинок я не видел. Но about:blank к путям добавлен не был :)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

uhm
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1597
Зарегистрирован: 02.12.2004 (Чт) 15:21

Сообщение uhm » 25.10.2005 (Вт) 9:25

На уровне "а вдруг сработает": попробуй "./img/check.gif".
Быть... или не быть. Вот. В чём вопрос?

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 25.10.2005 (Вт) 11:13

uhm, нифига не сработает.
Откуда IE возьмёт имя сайта? Телепатически прочитает из головы codemaster-а?
Изображение

uhm
Продвинутый гуру
Продвинутый гуру
Аватара пользователя
 
Сообщения: 1597
Зарегистрирован: 02.12.2004 (Чт) 15:21

Сообщение uhm » 25.10.2005 (Вт) 11:58

Да, стормозил. А нельзя HTML-код сначала в файл записать, а потом этот файл открыть браузером? Тогда можно будет относительные пути прописывать.

Че-то меня сегодня на идеи потянуло... Уже почти из области фантастики - есть еще формат .mht, который позволяет картинки в себе хранить...
Быть... или не быть. Вот. В чём вопрос?

Andrey Fedorov
Член-корреспондент академии VBStreets
Член-корреспондент академии VBStreets
 
Сообщения: 3287
Зарегистрирован: 21.05.2004 (Пт) 9:28
Откуда: Москва

Сообщение Andrey Fedorov » 25.10.2005 (Вт) 13:06

uhm писал(а):Да, стормозил. А нельзя HTML-код сначала в файл записать, а потом этот файл открыть браузером? Тогда можно будет относительные пути прописывать.


Как он пишет:

к сожалению от IStream по ряду причин тоже не отойти


То есть похоже код загрузки должен быть тот что приведен вначале. Только WebBrowser-у надо сказать путь...
Фиг Вам! - Сказал Чебурашка, обгладывая Крокодила Гену...

tyomitch
Пользователь #1352
Пользователь #1352
Аватара пользователя
 
Сообщения: 12822
Зарегистрирован: 20.10.2002 (Вс) 17:02
Откуда: חיפה

Сообщение tyomitch » 25.10.2005 (Вт) 16:54

Andrey Fedorov писал(а):
к сожалению от IStream по ряду причин тоже не отойти


То есть похоже код загрузки должен быть тот что приведен вначале. Только WebBrowser-у надо сказать путь...

А чем так плохо-то одним вызовом Replace заменить все пути на абсолютные?
Изображение


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

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

Сейчас этот форум просматривают: Google-бот, SemrushBot и гости: 24

    TopList