Вверх ↑
Этот топик читают: Гость
Ответов: 12
Рейтинг: 0
#1: 2009-05-27 15:07:39 ЛС | профиль | цитата
Делал программку для работы с некоторыми сайтами по HTTP протоколу, все вроде бы ничего, но на одном из сайтов очень замудреный JavaScript, который выдает ID. Мало того, что этот скрипт просто мегаразмеров, так еще и через обфускатор пропущен, в общем разобраться в нем у меня не получается. Решил использовать WebBrowser, он то все переварит, но и тут загвоздка - ограничен в возможностях. Решил добавить функциональности, покапался в интернете, нашел много полезных функций, таких как:

Работа через прокси (берет не стандартные настройки из реестра, а те которые ему подсунуть)
Замена картинок
Отмена загрузки страницы
Выведение списка ссылок
Доступ к фреймам
и многое другое

+ исходники к довольго функциональному браузеру на Delphi.

Раньше писал только JavaScript'ы и то не шибко сложные. Из всего найденого смог внедрить только остановку загрузки страницы (это самое простое).
Мог бы кто нибудь помочь с внедрением или объяснить на пальцах, как это сделать.
И возможно ли это сделать через Inline code и как, у меня не получается.

P.S. ошибки в подсказках на точках doBack и doForward - написано "Взвращается".
карма: 0

0
Администрация
Ответов: 15295
Рейтинг: 1519
#2: 2009-05-27 17:03:37 ЛС | профиль | цитата
такие задачи выполнять для начала лучше всего в самом элементе. Обычно необходимо получить ссылку на DOM структуру документа и далее уже работать именно с ней. Как это делается - можно найти в том же интернете
карма: 27
0
Ответов: 12
Рейтинг: 0
#3: 2009-05-27 19:15:52 ЛС | профиль | цитата
Ну, вот скажем, есть у меня вот такой код:

#pas
procedure TForm1.Button1Click(Sender: TObject);
var
li: Word;
begin
for li := 0 to WebBrowser1.OleObject.Document.Images.Length - 1 do
WebBrowser1.OleObject.Document.Images.Item(0).Src := 'c:\MyImage.gif';
end;

Заменяю имя процедуры на:

#pas
THIWebBrowser._work_doImageReplace;
добавляю в процедуру проверку существования документа:

#pas
if PKOLWebBrowser(Control).Document <> nil then
вместо "WebBrowser1.OleObject" пишу "PKOLWebBrowser(Control)"
прописываю все точки входа и процедуру в public в нескольких местах, как это сделано в самом THIWebBrowser'е
и в итоге она не только не работает, но и не компилется. Выводит сообщение:

KOLComObj.pas(1614) Hint: Value assigned to 'Status' never used

KOLComObj.pas(2337) Hint: Value assigned to 'SaveInitProc' never used

В общем ничего не получается.

С остановкой загрузки страницы, как уже писал раньше, все прошло на ура.
Вот код:

#pas
procedure THIWebBrowser._work_doStop;
begin
PKOLWebBrowser(Control).Stop;
end;
Все компилится и работает.

Что я делаю не так?
Может сам код не рабочий?
карма: 0

0
файлы: 1code_13486.txt [243B] [106]
Администрация
Ответов: 15295
Рейтинг: 1519
#4: 2009-05-27 21:53:17 ЛС | профиль | цитата
RaMoN, что-то ты не договариваешь. Вот это
RaMoN писал(а):
Выводит сообщение:

KOLComObj.pas(1614) Hint: Value assigned to 'Status' never used

KOLComObj.pas(2337) Hint: Value assigned to 'SaveInitProc' never used

ошибками не является. Ошибки помечаются в отладке красным цветом и начинаются со слова Error. Ну и наконец не вижу портированного кода вот этих строк

#pas
for li := 0 to WebBrowser1.OleObject.Document.Images.Length - 1 do
WebBrowser1.OleObject.Document.Images.Item(0).Src := 'c:\MyImage.gif';
которые видимо и являются причиной неработоспособности кода.
карма: 27
0
Ответов: 12
Рейтинг: 0
#5: 2009-05-27 23:50:27 ЛС | профиль | цитата
В общем внедрить удалось. Все скомпилировалось, программа запускается, только функция не работает.
Скорее всего портирую не туда и не так.
browser: code_13500.txt
ini: code_13501.txt
sha: code_13502.txt
карма: 0

0
файлы: 3code_13500.txt [14.3KB] [309], code_13501.txt [1.6KB] [97], code_13502.txt [971B] [95]
Администрация
Ответов: 15295
Рейтинг: 1519
#6: 2009-05-28 11:57:50 ЛС | профиль | цитата
я что-то сомневаюсь, что поле .OleObject там необходимо
карма: 27
0
Ответов: 12
Рейтинг: 0
#7: 2009-05-28 14:49:07 ЛС | профиль | цитата
Немножко переделал, все работает, но не в полной мере, да и выглядит на мой взгляд корявенько.
.OleObgect - необходим, без него не рабоотает.

Не могу сообразить, как сделать чтобы картинки заменялись автоматом при загрузке страницы (чтоб вообще не загружались), и обратное действие чтоб можно было менять настройки.
pas(добавленное выделил комментами):code_13512.txt
ini:code_13513.txt
sha:code_13514.txt
ini и sha прилагаю для простоты исследования.
карма: 0

0
Администрация
Ответов: 15295
Рейтинг: 1519
#8: 2009-05-28 14:55:17 ЛС | профиль | цитата
RaMoN, после правки своего поста нужно обязательно жать сохранение иначе аттачи остаются во временном буфере
карма: 27
0
Ответов: 1328
Рейтинг: 69
#9: 2009-05-28 14:56:38 ЛС | профиль | цитата
RaMoN, все ссылки выбрасывают на главную старого форума
карма: 2

0
Ответов: 12
Рейтинг: 0
#10: 2009-05-28 15:28:05 ЛС | профиль | цитата
Что то я не нахожу кнопки сохранить.
карма: 0

0
Разработчик
Ответов: 4698
Рейтинг: 426
#11: 2009-05-28 15:39:41 ЛС | профиль | цитата
Та же кнопка, что и отправить(на том же месте)((рядом со сбросить))
карма: 10
0
Ответов: 12
Рейтинг: 0
#12: 2009-05-28 15:47:51 ЛС | профиль | цитата
Так я и жму отправить. Может что то проглючило?
У меня почему то файлы из этого топика прикрепились к сообщению в другом топике.
карма: 0

0
Администрация
Ответов: 15295
Рейтинг: 1519
#13: 2009-05-28 16:02:45 ЛС | профиль | цитата
читаем главу "Об аттачах" Раздел Help
карма: 27
0
Ответов: 12
Рейтинг: 0
#14: 2009-05-28 19:33:31 ЛС | профиль | цитата
Хорошо, все почитал, уяснил. Наверное забыл окно редактирования закрыть.
А как быть с кодом?
Ведь можно расширить возможности встроенного WebBrowser'a.
Это и для HiAsma будет только в плюс.
карма: 0

0
Администрация
Ответов: 15295
Рейтинг: 1519
#15: 2009-05-28 20:18:58 ЛС | профиль | цитата
RaMoN писал(а):
Ведь можно расширить возможности встроенного WebBrowser'a.

на данный момент я не усматриваю особой ценности в методе, который одни картинки меняет на другие.

doStop - да, можно добавить
карма: 27
0
Сообщение
...
Прикрепленные файлы
(файлы не залиты)