Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2003.01.13;
Скачать: [xml.tar.bz2];

Вниз

Web браузер   Найти похожие ветки 

 
Igit   (2002-12-23 18:11) [0]

Как мне реализовать... такую вещь... прога открывает URL веб страницы, дожидается его загрузки, и все картинки с него сохраняет на диск


 
Хмырь   (2002-12-23 18:19) [1]

Нууу! Несерьезно... Это даже я знаю (что весьма удивительно)
:-). Все через компонент WebBrowser на панели компонентов Internet...

ЗЫ. Проще возми готовую прогу типа WebImage...


 
Ihor Osov'yak   (2002-12-23 18:20) [2]

TWebBrowser, OnDocumentComplete

С картинками несколько труднее будет. Нет штатного способа выдернуть с TWebBrowser(либо я не знаю). Я делал так:
- или ищем в кеше
- или грузим по новой каким-то загрузчиком
- или дергаем с того же TWebBrowser через IViewObject, но это только с видимых областей TWebBrowser, то, что осталось за кадром - см. первых два варианта ...


 
Ihor Osov'yak   (2002-12-23 18:22) [3]

2 Хмырь © (23.12.02 18:19)

ну с, молодой человек, просветите насчет картинок.. Убедительна просьба перед тем как делать просвещение самому убедится в работоспособности просвещения :-).


 
Ketmar   (2002-12-23 18:26) [4]

способ есть, но "черезтудой". %-) перехватить все качаемые файлы и отсортировывать картинки. если мне не изменяет склероз, то это не так сложно.

Satanas Nobiscum! 23-Dec-XXXVII A.S.


 
Igit   (2002-12-23 18:26) [5]

Это... яндекс замучил, может кините по быстрому эти компоненты на мыло, pls


 
Ihor Osov'yak   (2002-12-23 18:34) [6]

2 Ketmar © (23.12.02 18:26)

Ну да. Забыл упомянуть. Два варианта - "локальный прокси" и app (ассинхронные настраиваимые протоколы, pluggable protocols, see msdn). Но то и то значительно более трудоемко (вариант app делал, но несколько для других целей, вариант прокси обсуждался на уровне идеи с коллегами), чем повторная загрузки или выдергивание с кеша (последнее не очень надежно, так как картинки там может и не быть)


 
Ihor Osov'yak   (2002-12-23 18:36) [7]

2 Igit © (23.12.02 18:26)

о компоненте см http://delphi.vitpc.com/mastering/tweb.htm :-)
об остальном в бвух словах не раскажешь...




 
Igit   (2002-12-23 18:38) [8]

Спасибо... щас почитаю...


 
Ketmar   (2002-12-23 18:46) [9]

мда. local proxy у меня стоит. и честно кэшит почти все интересное, что через него летает. заодно баннерье рубит. удобно... %-)

Satanas Nobiscum! 23-Dec-XXXVII A.S.


 
Хмырь   (2002-12-23 18:50) [10]

2Ihor Osov"yak

> ну с, молодой человек, просветите насчет картинок..
> Убедительная просьба перед тем как делать просвещение самому
> убедится в работоспособности просвещения :-).

Ну вот... Обижают... :-)

2Igit
Свои исходники я посеял, но делал немного корявей, чем Ketmar. Находил все линки:

...
var i: Integer;
...
for i := 0 to Webbrowser1.OleObject.Document.links.Length - 1 do
Listbox1.Items.Add
(Webbrowser1.OleObject.Document.Links.Item(i));
...


Затем отсортировывал их (если в строке есть кусок типа jpg или gif), и закачивал с помощью ShellAPI. Типа так (пример не мой, где-то валялся на одной из конференций в ФИДО):

uses
URLMon, ShellApi;
function DownloadFile(SourceFile, DestFile: string): Boolean;
begin
try
Result := UrlDownloadToFile(nil, PChar(SourceFile), PChar(DestFile), 0, nil) = 0;
except
Result := False;
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
const
// URL Location
SourceFile = " http://www.google.com/intl/de/images/home_title.gif";
// Where to save the file
DestFile = "c:\temp\google-image.gif";
begin
if DownloadFile(SourceFile, DestFile) then
begin
ShowMessage("Download succesful!");
// Show downloaded image in your browser
ShellExecute(Application.Handle, PChar("open"), PChar(DestFile),
PChar(""), nil, SW_NORMAL)
end
else
ShowMessage("Error while downloading " + SourceFile)
end;


 
Ihor Osov'yak   (2002-12-23 18:56) [11]

2 Хмырь © (23.12.02 18:50)

Да не обижает то здесь никто.

Цитирую:

> Все через компонент WebBrowser на панели компонентов Internet...


Решение, приведенное вами - повторная загрузка с помощью третьих средств (не TWebBrowser) - собственно на что и Вам намекалось..

ЗЫ - "Уточните значение слов, и вы избавите человечество от большей части его заблуждений"
с. Рене Декарт





 
gsu   (2002-12-23 18:58) [12]

вначале было слово


 
Хмырь   (2002-12-23 19:06) [13]

2Ihor Osov"yak
Свои слова: "Все через компонент WebBrowser на панели компонентов Internet..." беру обратно.

ЗЫ. Раз я делаю неправильно (я в Вашем авторитете не сомневаюсь), тогда вразумите непутевого как надо...


 
Хмырь   (2002-12-23 19:11) [14]


> gsu ©
> вначале было слово


In the beginning was the Word, and the Word was 1.0...


 
Igit   (2002-12-23 19:12) [15]

Ihor Osov"yak, а как подергать с того же TWebBrowser через IViewObject с видимых областей TWebBrowser


 
Ihor Osov'yak   (2002-12-23 19:13) [16]

2 Хмырь © (23.12.02 19:06)

Все делаете Вы правильно, только не с помощью одного wb :-).
То есть Все через компонент WebBrowser на панели компонентов Internet... кореектнее бы - первую часть задачи через WebBrowser на панели компонентов Internet и то с оговоркой - ибо этот компонент появился там только с D5, раньше было нужно делать импорт соотв. активИкс...

Вторую часть - см. выше, в т.ч. и вашим способом (но это уже wb)...

И не кокетничайте по поводу путевости/непутевости..


 
gsu   (2002-12-23 19:14) [17]

In the beginning was the Word, and the Word was Tex


 
Ihor Osov'yak   (2002-12-23 19:15) [18]

2 Igit © (23.12.02 19:12)


Что - то типа этого, IViewObject - uses activeX;

procedure TFormOCR.DoProcess(iDoc: IDispatch;
top, left, height, width: integer;
YMax,XMax:integer);

var
ViewObject: IViewObject;
sourceDrawRect,srcRect,destRect: TRect;

begin
//_Pause;
//fEnClose:=true;
//Close;
if not assigned(iDoc) then Exit;

iDoc.QueryInterface(IViewObject, ViewObject);
if not assigned(ViewObject) then exit;

ImageMain.Align := alNone;

ImageMain.Width := xMax;
ImageMain.Height := yMax;
imgTask.Width:= width;
imgTask.Height:=height;
sourceDrawRect := Rect(0, 0, ImageMain.Width, ImageMain.Height);
ViewObject.Draw(DVASPECT_CONTENT, 1, nil, nil, Self.Handle,
imageMain.Canvas.Handle, @sourceDrawRect, nil, nil, 0);
ViewObject := nil;

srcRect:=Rect(left,top,left+width,top+height);
destRect:=Rect(0,0,width,height);
imgTask.Canvas.CopyRect(destRect,ImageMain.Canvas,srcRect);

//inc(ii);
//imgTask.Picture.SaveToFile("c:\y"+IntToStr(ii)+".bmp");

Timer1.Enabled:=true;
enAutoClose:=true;
ShowModal;


end;


 
Igit   (2002-12-23 19:16) [19]

вообще, переформулю свойвопрос, как мне получить код страницы из нижнего фрейма для анализа на src=*.jpg


 
Ihor Osov'yak   (2002-12-23 19:17) [20]

Timer1, enAutoClose к сабжу отношения не имеют,
ImageMain: TImage; - то, куда дергаем


 
Ihor Osov'yak   (2002-12-23 19:20) [21]

Для получения координат картинки можно юзать чего то примерно так
function GetAbsOffsetTop(iElem:IHtmlElement):integer;
var parent:IHTMLElement;

begin
//ii:=iElem.get_offsetTop;
result := iElem.get_offsetTop;
parent := iElem.Get_offsetParent;
if assigned(parent) then result := result +GetAbsOffsetTop(parent);
end;

function GetAbsOffsetLeft(iElem:IHtmlElement):integer;
var parent:IHTMLElement;
begin
result := iElem.get_offsetLeft;
parent := iElem.Get_offsetParent;
if assigned(parent) then result := result +GetAbsOffsetLeft(parent);

end;



Страницы: 1 вся ветка

Форум: "Потрепаться";
Текущий архив: 2003.01.13;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.49 MB
Время: 0.01 c
14-37327
Слава
2002-12-23 21:10
2003.01.13
Мастера! Помогите!


1-37011
Dmitriy_R
2003-01-01 14:24
2003.01.13
Каталоги, файлы, и т.д.


1-37183
Armageddon
2002-12-28 15:23
2003.01.13
Тип файла


14-37336
gsu
2002-12-23 13:07
2003.01.13
Новый год


7-37390
KiM
2002-11-01 08:11
2003.01.13
Нужно отключить клавиатуру и мышь





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский