Модераторы: MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Подмена изображения передоваемого браузеру 
:(
    Опции темы
Gigabyte
Дата 22.4.2006, 19:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Студент-халявщик
**


Профиль
Группа: Участник
Сообщений: 305
Регистрация: 1.11.2004
Где: ПЫтер

Репутация: нет
Всего: 3



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


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

user posted image
user posted image
PM MAIL ICQ   Вверх
Rouse_
Дата 22.4.2006, 20:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 469
Регистрация: 23.4.2005

Репутация: нет
Всего: 29



Вот в этом примере вырезаются все картинки которые грузяться из img.yandex.ru, ты можешь вместо вырезание подставить свою картинку

Код

unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, OleCtrls, SHDocVw, IdBaseComponent, IdComponent,
  IdTCPConnection, IdTCPClient, IdHTTP, mshtml, ActiveX;

type
  TForm1 = class(TForm)
    IdHTTP1: TIdHTTP;
    WebBrowser1: TWebBrowser;
    WebBrowser2: TWebBrowser;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.Button1Click(Sender: TObject);
const
  StartImg = '<img src="';
  EndImg = '>';
  LengthStart = Length(StartImg);
  LengthEnd = Length(EndImg);
  LengthSum = LengthStart + LengthEnd;
var
  InHTML, OutHTML, ImageLink: String;
  Position: Cardinal;
  Document: IHtmlDocument2;
  V: Variant;
begin
  // Загружаем оригинальную страницу (для сравнения)
  WebBrowser1.Navigate('http://www.yandex.ru');
  // Получаем код этой страницы руками
  InHTML := IdHTTP1.Get('http://www.yandex.ru');
  // Начинаем парсить
  while Length(InHTML) > 0 do
  begin
    // Ищем начало рисунка
    Position := Pos(StartImg, InHTML);
    // Если нашли
    if Position > 0 then
    begin
      // Все что до него - помещаем в выходной буффер
      OutHTML := OutHTML + Copy(InHTML, 1, Position - 1);
      // Удаляем ненужное из входного буффера
      Delete(InHTML, 1, Position - 1);
      // Ищем конец картинки
      Position := Pos(EndImg, InHTML);
      // Запоминаем картинку
      ImageLink := Copy(InHTML, LengthStart, Position - LengthSum);
      // Если эта картинка грузится не с узла img.yandex.ru - добавялем ее в выходной буффер
      if Pos('img.yandex.ru', ImageLink) = 0 then
        OutHTML := OutHTML + Copy(InHTML, 1, Position + LengthEnd - 1);
      // Удаляем из входного
      Delete(InHTML, 1, Position + LengthEnd - 1);
    end
    else
    begin
      // Больше картинок нет - все что осталось перекидываем в выходной буффер
      OutHTML := OutHTML + InHTML;
      InHTML := '';
    end;
  end;
  // Закидываем пропарсенный текст в бразер
  WebBrowser2.Navigate('about:blank');
  while WebBrowser2.Document = nil do
    Application.ProcessMessages;
  Document := WebBrowser2.Document as IHtmlDocument2;
  V := VarArrayCreate([0, 0], varVariant);
  V[0] := OutHTML;
  Document.Writeln(PSafeArray(TVarData(v).VArray));
end;

end.
 


--------------------
 Vae Victis
(Горе побежденным (лат.))
Демо с открытым кодом: http://rouse.drkb.ru 
PM MAIL WWW ICQ   Вверх
Gigabyte
Дата 25.4.2006, 13:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Студент-халявщик
**


Профиль
Группа: Участник
Сообщений: 305
Регистрация: 1.11.2004
Где: ПЫтер

Репутация: нет
Всего: 3



немного не то 
в примере данные передаются браузеру который находиться на форме
а мне надо что бы данные передовались Ыксплореру  


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

user posted image
user posted image
PM MAIL ICQ   Вверх
Rouse_
Дата 6.5.2006, 08:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 469
Регистрация: 23.4.2005

Репутация: нет
Всего: 29



Внедряйся в экземпляр браузера, перехватывай recv и подменй в нем данные 


--------------------
 Vae Victis
(Горе побежденным (лат.))
Демо с открытым кодом: http://rouse.drkb.ru 
PM MAIL WWW ICQ   Вверх
Gigabyte
Дата 10.5.2006, 13:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Студент-халявщик
**


Профиль
Группа: Участник
Сообщений: 305
Регистрация: 1.11.2004
Где: ПЫтер

Репутация: нет
Всего: 3



а не мог ли ты по подробнее описать как это делать или где найти инфу по данной теме 


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

user posted image
user posted image
PM MAIL ICQ   Вверх
yahaha
Дата 10.5.2006, 22:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 21
Регистрация: 9.5.2006

Репутация: нет
Всего: нет



Doc: IHTMLDocument2
...
Doc := WebBrowser1.Document as IHTMLDocument2;
(Doc.all.item(i,'''') as IHTMLElement).src:=... // что тебе надо

P.S. Только почему-то это не работает при DesignMode='On'

 
PM MAIL   Вверх
aktuba
Дата 17.5.2006, 21:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Смышленный
***


Профиль
Группа: Завсегдатай
Сообщений: 1915
Регистрация: 24.4.2006
Где: Планета Земля

Репутация: нет
Всего: 38



To yahaha: вместо 
Код

(Doc.all.item(i,'''') as IHTMLElement).src:=... // что тебе надо


должно работать следующее:
Код

(Doc.all.item(i,'''') as IHTMLImgElement).src:=... // что тебе надо
 


--------------------
user posted image
PM MAIL WWW Skype   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: ActiveX/СОМ/CORBA"

Rrader
Girder

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Delphi
  • Вопросы по SQL и вопросы по базам данных, не связанные с Delphi, задавать здесь

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Rrader, Girder.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: ActiveX/СОМ/CORBA | Следующая тема »


 




[ Время генерации скрипта: 0.0534 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.