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

Вниз

Интеграция с HTML   Найти похожие ветки 

 
Checist [root]   (2003-07-25 02:42) [0]

Вот, что мне необходимо сделать:
у меня в IE полностью загружена вэб страница, на ней лишь одна картинка формата bmp или jpg и более ничего. Как мне програмно достучаться до этой картинки (в смысле сохранить)?
В принципе она будет в куках, но как найти, которая из них из них?


 
Checist [root]   (2003-07-25 02:52) [1]

Мне хотя бы идею! :(


 
cyberwolf   (2003-07-25 03:02) [2]

сначала выдрать путь из строки поиска IE, потом загнать HTML-код этой страницы из строки поиска в какой-нибудь StringList. А уже потом последовательно по строчкам искать всякие там <img src= и прочее с помощью функции pos


 
Checist [root]   (2003-07-25 03:07) [3]

Вот тут и вся хрень, даже если выдрать - придется ли ее сново грузить при обращении или Win сам словит обращение и перенаправит его на картинку в куках?
Кстати, а как его выдрать из IE?


 
cyberwolf   (2003-07-25 03:20) [4]

нашел-таки :)

Как захватить текущий URL из окна Internet Explorer
--------------------------------------------------------------------------------

Описываем две функции GetText и GetURL:

Function GetText(WindowHandle: hwnd):string;
var
txtLength : integer;
buffer: string;
begin
TxtLength := SendMessage(WindowHandle, WM_GETTEXTLENGTH, 0, 0);
txtlength := txtlength + 1;
setlength (buffer, txtlength);
sendmessage (WindowHandle,wm_gettext, txtlength, longint(@buffer[1]));
result := buffer;
end;

function GetURL:string;
var
ie,toolbar,combo,
comboboxex,edit,
worker,toolbarwindow:hwnd;
begin
ie := FindWindow(pchar("IEFrame"),nil);
worker := FindWindowEx(ie,0,"WorkerA",nil);
toolbar := FindWindowEx(worker,0,"rebarwindow32",nil);
comboboxex := FindWindowEx(toolbar, 0, "comboboxex32", nil);
combo := FindWindowEx(comboboxex,0,"ComboBox",nil);
edit := FindWindowEx(combo,0,"Edit",nil);
toolbarwindow := FindWindowEx(comboboxex, 0, "toolbarwindow32", nil);
result := GetText(edit);
end;

Ну а затем пользуемся функцией GetURL, например, можем в поле ввода по нажатию на кнопку выводит текущий URL:

procedure TForm1.Button1Click(Sender: TObject);
begin
Edit1.Text:=GetURL;
end;


 
cyberwolf   (2003-07-25 03:23) [5]

а разве все картинки при соответствующих параметрах не сохраняются в Temporary Internet Files?



 
Checist [root]   (2003-07-25 03:30) [6]

Сохраняются.
Все понятно.
1) Далее грузим весь код страницы в ListBox?
А как это сделать - LoadFromFile - не пройдет
2) ВОТ САМОЕ ГЛАВНОЕ: КАК ЗАГРУЗИТЬ ТУ САМУЮ КАРТИНКУ В Image1?


 
cyberwolf   (2003-07-25 03:39) [7]

А для отлова файла из куков есть два способа (придуманные только что :)
1. Проверять дату самого нового файла с расширением JPG или GIF по какому-либо определенному событию (например изменение URL в Internet Exploder"e). естественно, дату проверять способами Дельфи. но, к сожалению, 100% гарантии этот способ не дает
2. ИМХО извращенный способ. Но здесь и шансы выше. Ты можешь поставить hook на папку Temporary Internet Files (а именно - на появление новых файлов). Как только он появится, сравниваешь его имя с именем из HTML-файла (параметр <img> тега "src"). Как эту ловушку поставить, я не знаю, но поставить можно определенно, потому что слышал сам. Открой новую ветку в форуме :)


 
cyberwolf   (2003-07-25 03:42) [8]

хммм... а ведь на новый HTML-файл в директории TEMPORARY INTERNET FILES можно тоже поставить хук... и уже получив путь к файлу грузить куда душа захочет...


 
Ihor Osov'yak   (2003-07-25 10:02) [9]

Да уж...


1. Получить интерфейс IHTMLWebBrowser2 к соотв. IE
2. Через IHTMLWebBrowser2.Document добраться к IHtmlDocument2
3. Пропарсить IHtmlDocument2 на предмет получения IHTMLImgElement к картинке
4. Посредством IHTMLImgElement.Get_href получить урл картинки
5. При помощи GetUrlCacheEntryInfo выудить имя файла в кеше...

Зы - mshtml.pas,SHDocVw.pas,WinInet.pas + msdn
Зы2 - в случае непоняток, п.1, 3, 5 заслуживают отдельных вопросов.

Зы3. Согласно местных традиций эти вопросы должны идти в форуме "Сети"



 
___Nikolay   (2003-07-25 11:27) [10]


for li:=0 to WebBrowser1.OleObject.Document.Images.Length - 1 do
WebBrowser1.OleObject.Document.Images.Item(0).Src...



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

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

Наверх




Память: 0.46 MB
Время: 0.009 c
3-82100
DelphiM
2003-09-03 01:51
2003.09.25
Ошибка или я чтото не правильно делаю подскажите


1-82232
Adil
2003-09-11 15:20
2003.09.25
Дерево каталогов


1-82222
Armaniak
2003-09-12 09:00
2003.09.25
Не выделяется по умолчанию фокус на Итеме TRadioGroup


4-82536
dima_Sh
2003-07-24 10:50
2003.09.25
Как отловить событие


1-82194
DeScriptor
2003-09-12 15:40
2003.09.25
Глобальные проблемы в работе с файлами в Дельфи





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский