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

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Получить рисунок из TWebBrowser 
:(
    Опции темы
Dimich
Дата 7.12.2004, 16:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Давно хотел написать програмку для отправки SMS на сотовые телефоны BeeLine. Вот наваял код:
Код

procedure TForm1.PostWithWebBrowser(PostString:string; URL:OleVariant);
var
 Data: Pointer;
 PostData: OleVariant;
 Flags, TargetFrame, Headers: OleVariant;
begin
 PostData := VarArrayCreate([0, Length(PostString) - 1], varByte);
 Data := VarArrayLock(PostData);
 try
   Move(PostString[1], Data^, Length(PostString));
 finally
   VarArrayUnlock(PostData);
 end;
 Flags := navNoWriteToCache;
 TargetFrame := EmptyParam;
 Headers:= 'Content-Type:application/x-www-form-urlencoded'+ #10#13#0;
 WebBrowser1.Navigate2(URL, Flags, TargetFrame, PostData, Headers);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
 s: string;
begin
 s := 'deferto=&adv_year=&send=send&confirm_key=I1IyFCbn0%5E&confirm_code=2771&destination_number_from=ordinary&network_code=14&phone=1234567&message=ASD&mlength=153&phone_answer_number=';
 PostWithWebBrowser(s,
 'http://www.beeonline.ru/portal/comm/send_sms/simple_send_sms.sms');
end;


Как известно, есть трабла с вводом контрольного числа из четырех цифрей. Если бы его каким-то образом заполучить, то можно было бы попробовать распознавать его. А вот как получить эту картинку?

Если изучать HTML код странички, то вот он рисунок:
http://www.beeonline.ru/servlet/send/confi...e/I1IyFCbn0.gif
попробуйте нажать в браузере "обновить" и проблема станет ясна.
--------------------
Не работает - исправь, работает - не трогай!!!
PM MAIL ICQ Jabber   Вверх
Прохожий
Дата 7.12.2004, 18:36 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Ну та что мешает загрузить этот рисунок?
  Вверх
Dimich
Дата 8.12.2004, 08:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Цитата
Ну та что мешает загрузить этот рисунок?

А мешает то, что этот рисунок генерится автоматически:
Цитата
Если изучать HTML код странички, то вот он рисунок:
http://www.beeonline.ru/servlet/send/confi...e/I1IyFCbn0.gif
попробуйте нажать в браузере "обновить" и проблема станет ясна.

Т.е. если его загрузить еще раз, то это будет уже совсем другой рисунок, не тот, который мы видели в TWebBrowser.

Есть какие нибудь идеи?
--------------------
Не работает - исправь, работает - не трогай!!!
PM MAIL ICQ Jabber   Вверх
Прохожий
Дата 8.12.2004, 09:48 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Цитата(Dimich @ 8.12.2004, 08:29)
Есть какие нибудь идеи?


Есть готовое решение.
Можно получить рисунок через баузер.
  Вверх
Dimich
Дата 8.12.2004, 09:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



как?
--------------------
Не работает - исправь, работает - не трогай!!!
PM MAIL ICQ Jabber   Вверх
Прохожий
Дата 8.12.2004, 10:15 (ссылка)    |    (голосов: 0) Загрузка ... Загрузка ... Быстрая цитата Цитата


Unregistered











Прийдется всю страницу грузить, а это лишнтй трафик.
А делается это вот так
Код

uses ClipBrd;
...
procedure TForm1.LoadImage(N:integer);
var body, imgs, controlRange: olevariant;
begin
body := WebBrowser1.OleObject.document.body;
imgs := WebBrowser1.OleObject.document.images.item(N);//нужный img
controlRange := body.createControlRange;
controlRange.add(imgs);// вместо imgs можно сразу вставить WebBrowser1.OleObject.document.images.item(N)
controlRange.execCommand('Copy', False, EmptyParam);//копируем
if ClipBoard.HasFormat(CF_BITMAP) then begin
Image1.Picture.Bitmap.LoadFromClipboardFormat(cf_BitMap, ClipBoard.GetAsHandle(cf_Bitmap), 0);//вставляем
Clipboard.Clear;//по желанию чистим буфер...
end;
end;
...
initialization
OleInitialize(nil);

finalization
OleUninitialize;

end.


Только картинки в IE должны быть включены, или вставляй try в нужное место(надеюсь сам найдешь куда).
Только не спрашивай как узнать номер картинки...


  Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "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.0822 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


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

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