-
Артем (22.02.08 09:37) [0]Помогите решить проблему. Есть WebBrowser, есть обработчик BeforeNavigate2, который "вынимает" из ресурсов html-страницы, делает в них изменения и отображает в браузере.
Проблема заключается в том, что после преобразований и отображения через(Wb.Document as IHTMLDocument2).write(PSafearray(TVarData(v).VArray))
у меня не отображаются картинки, которые также в ресурсах.
html пришиваются так:
P1 23 P1.HTM
P2 23 P1.HTM
...
Картинки также:
IM1 23 IM1.JPG
IM2 23 IM2.JPG
...
Обработчик BeforeNavigate2 выглядит так:
if URL='about:blank' then exit;
cancel:=true;
ur:=url;
str:=after('/P',ur); {здесь получаю индекс страницы}
s:=TStringList.Create;
U:=StringReplace(URL, 'about', '',[rfReplaceAll, rfIgnoreCase]);
res:='P'+str;
rs := TResourceStream.Create(hinstance, res, PChar(23));
try
s.LoadFromStream(rs);
finally
rs.Free;
end;
temp:=StringReplace(S.Text, '<User>', username,[rfReplaceAll, rfIgnoreCase]); {замена <User> на необходимое}
S.Free;
V:=Vararraycreate([0,0], varVariant);
v[0]:=temp;
(Wb.Document as IHTMLDocument2).write(PSafearray(TVarData(v).VArray));
Что делаю не так? Почему у меня не отображаются картинки, которые прописаны в HTML? Может что-то нужно еще обрабатывать?
Очнь нужна Ваша помощь, коллеги. Заранее ОГРОМНОЕ спасибо! -
Сергей М. © (22.02.08 14:10) [1]Читай справку:
Write an OnBeforeNavigate2 event handler to redirect or cancel a change to a different URL
А ты что творишь в своем обработчике ?
Ты там творишь совсем другое) -
Artem (22.02.08 14:30) [2]Я все делаю нормально. То, что мне надо сделать с текстом - все работает.
А вот с графикой не разберусь. -
Сергей М. © (22.02.08 14:58) [3]
> Я все делаю нормально
Ну продолжай в том же духе. -
Сергей М. © (22.02.08 15:10) [4]Тут, кстати, радует другое - размещение вопроса именно в "Сети")
-
Artem (22.02.08 15:57) [5]Сергей, в Ваших комментах я не нуждаюсь. Если есть опыт работы с браузером - так помогите советом.
-
Сергей М. © (22.02.08 16:19) [6]Сначала представь ТЗ хоть в сколь-либо презентабильном виде, потом будут и советы.
А та шняга, чтго ты изложил, - это не ТЗ.
И к "Сетям" отношения НЕ имеет. -
Artem (22.02.08 22:34) [7]А что не понятно конкретно?
-
Artem (22.02.08 22:35) [8]И к "Сетям" отношения НЕ имеет.
Имеет, т.к. WebBrowser -
DiamondShark © (22.02.08 23:59) [9]
> Artem (22.02.08 14:30) [2]
> Я все делаю нормально.
Значит у тебя всё работает, и проблемы нету.
Есть такая штука -- отладчик. Он умеет такие вещи делать, как ставить точки останова и показывать значения переменных.
Ты уже ставил точку останова в обработчике BeforeNavigate2, смотрел, получает ли он урл картинок?
---------
Кстати, зачем такой трансректальный метод для такой простой задачи?
Грузи свою страничку сразу по урл-схеме res:, потом в NavigateComplete заменяй в страничке нужный текст, используя HTML DOM.
Например, зарезервируй место вот так:
<SPAN id="userText"></SPAN>
Потом находишь в документе элемент по id и заменяешь его свойство innerHTML или innerText.
Да, урлы картинок тоже должны быть res: -
DiamondShark © (23.02.08 00:03) [10]Какой урл используется для навигации на страницу и какие урлы прописаны у картинок в тексте страницы?
-
Artem (23.02.08 00:44) [11]Какой урл используется для навигации на страницу
p1
p2
p2
...какие урлы прописаны у картинок в тексте страницы
im1
im2
im3
... -
DiamondShark © (23.02.08 01:18) [12]
> Artem (23.02.08 00:44) [11]
И как, по-твоему, несчатный браузер должен дотелепать, что im1 находится в каком-то там ресурсе?
задавай полный урл:
res://project1.exe/im1 -
Artem (23.02.08 01:23) [13]Да, я уже разобрался. Сейчас занимаюсь обработкой. Спасибо.