Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

сохранить картинку без ее загрузки

290
29 октября 2013 года
Patr1ot
458 / / 09.02.2008
Добрый день!

Нужна ваша помощь, подскажите как можно сохранить уже загруженную в WebBrowser картинку, не на Delphi либо на С++ либо JavaScript, перерыл кучу сайтов форумов ничего подходящего не нашел, на Delphi есть такая возможность но в С++ нет таких функций, наверное на Си как то по другому нужно ее получить. Опять же без загрузки, а из уже загруженных. Спасибо огромное тем кто откликнется.
394
29 октября 2013 года
MegaMozg
317 / / 18.03.2006
а вы какую библиотеку или фреймворк ли используете для вывода Web-контента? Там, вероятно, есть методы для доступа к содержимому
290
29 октября 2013 года
Patr1ot
458 / / 09.02.2008
Я использую компонент WebBrowser, ни каких библиотек не подгружаю
290
30 октября 2013 года
Patr1ot
458 / / 09.02.2008
Нашел код на делфи, помогите плз, подогнать под C++:

Писание к коду(ссылка на источник):
Следующей задачей является получение самого изображения без повторного его выкачивания из сети по URL. Автору известен способ сделать это используя буфер обмена Windows. Приведенная ниже функция ищет изображение по заданному URL и возвращает Bitmap в экземпляр объекта TImage:


Код:
uses ExtCtrls, mshtml, OleCtrls, ClipBrd, SHDocVw;
function GetBrowserImage(Browser: TWebBrowser; url: string; Image: TImage): boolean;
  var body, imgs, controlRange: olevariant;
      i: integer;
      ImageHref: string;
begin
  Result:=false;
  body := Browser.OleObject.document.body;

  for i := 0 to Browser.OleObject.Document.Images.Length - 1 do
  begin
    ImageHref := Browser.OleObject.Document.Images.Item(i).Href;
    if ImageHref=url then
    begin
      imgs := Browser.OleObject.document.images.item(i);
      controlRange := body.createControlRange;
      controlRange.add(imgs);
      controlRange.execCommand('Copy', False, EmptyParam);
      try
        if ClipBoard.HasFormat(CF_BITMAP) then
        begin
          Image.Picture.Bitmap.LoadFromClipboardFormat(cf_BitMap, ClipBoard.GetAsHandle(cf_Bitmap), 0);
          Result:=true;
        end;
      except
      end;
      Exit;
    end;
  end;
end;
290
30 октября 2013 года
Patr1ot
458 / / 09.02.2008
Попробовал так но не получается... надо как то найденный элемент с картинкой вставить в Image1


Код:
long i;
        IHTMLDocument2* iDoc;
        IDispatch* iDisp;
        IHTMLElement* IElement;
        IHTMLSelectElement* iSelectElement;
        IHTMLInputElement *iInputElement;
        IHTMLOptionElement* iOptionElement;
        IHTMLAnchorElement* IAnchorElement;
        IHTMLScriptElement *IScriptElement;
        IHTMLBodyElement* IBodyElement;
        IHTMLTextAreaElement* iTextAreaElement;
        IHTMLImgElement* iImgElement;
        IHTMLFormElement* iFormElement;
        IHTMLElementCollection* iElementCollection=NULL;
        if( Form1->VK->ControlInterface->Document)
          {
            Form1->VK->ControlInterface->Document->QueryInterface(__uuidof( IHTMLDocument2),(void**)&iDoc);
          }


        long p;
        TVariant index = 1;

        iDoc->get_images(&iElementCollection);
        iElementCollection->item(index,TVariant(0),&iDisp);
        if(iDisp)
         {
             TComInterface<IHTMLElement> pElement;
             iDisp->QueryInterface(IID_IHTMLElement, (LPVOID*)&pElement);
             if(pElement)
                {
                                   Image1->....??????
                }
         }
290
31 октября 2013 года
Patr1ot
458 / / 09.02.2008
Народ ну помогите пожалуйста, готов выплатить вознограждение за помощь!
290
03 ноября 2013 года
Patr1ot
458 / / 09.02.2008
Замучался но нашел решение:
Кому кому интересно ловите:


Код:
Variant body, imgs, controlRange;

  body = VK->OleObject.OlePropertyGet("document").OlePropertyGet("body");
  imgs = VK->OleObject.OlePropertyGet("document").OlePropertyGet("images").OleFunction("item", 7);
  controlRange = body.OleFunction("createControlRange");
  controlRange.OleProcedure("add", imgs);
  controlRange.OleProcedure("execCommand", "Copy", false, EmptyParam);

  if (Clipboard()->HasFormat(CF_BITMAP))
  {
    Image1->Picture->Bitmap->LoadFromClipboardFormat(CF_BITMAP, Clipboard()->GetAsHandle(CF_BITMAP), 0);
    Clipboard()->Clear();
  }
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог