Главная страница
    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.47 MB
Время: 0.011 c
14-82435
Дон Хуан
2003-08-21 18:35
2003.09.25
---|Ветка была без названия|---


1-82275
Новик
2003-09-12 14:18
2003.09.25
Hint для TreeView


1-82268
Zhouck
2003-09-15 11:42
2003.09.25
Как связаться с OpenOffice ?


6-82379
b0bi
2003-07-28 17:39
2003.09.25
Как получить html страницу и сохранить её в файл


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