Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.09.25;
Скачать: CL | DM;

Вниз

Интеграция с 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;
Скачать: CL | DM;

Наверх




Память: 0.49 MB
Время: 0.023 c
4-82542
xZero
2003-07-23 23:28
2003.09.25
.LNK файлы


1-82245
pave1
2003-09-15 13:25
2003.09.25
Хороший бесплатный компонент для создания отчета в MS Excel


1-82193
dima_matrix
2003-09-10 19:38
2003.09.25
Немодальные окна


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


1-82287
Алексей Петухов
2003-09-15 05:57
2003.09.25
Сохранить и Загрузить Форму.