![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Программное управление Internet Explorer-ом [D7, WinXP]
dmitry_12_08_73 © (2009-07-14 21:55:00)Подскажите, как можно программно посылать команды в открытый Internet Explorer с целью, например, прокрутки веб-страницы
palva (2009-07-15 17:39:00) [1]А какая проблема? Вы не можете определить DOCTYPE? html это или xhtml ?
Я тоже не знаю как это сделать. А залезать в google и искать решение не хочется. Особенно мне. Тогда давайте напишем две строчки подряд:
WebBrowser1.OleObject.document.body.scrollTop := 20;
WebBrowser1.OleObject.document.documentElement.scrollTop := 20;
Первая из них сработает когда в DOCTYPE указано html, а вторая, когда xhtml.
dmitry_12_08_73 (2009-07-15 17:22:00) [2]Большое спасибо, но у меня такой случай: есть уже открытый Internet Explorer с какой-то открытой веб-страницей (я не знаю её URL) и мне надо получить доступ к свойствам этой страницы через WebBrowser1.
palva (2009-07-15 17:08:00) [3]Не понял, что подключать. На пустую форму кладем WebBrowser и Button Вставляем код в обработчики
procedure TForm1.FormCreate(Sender: TObject);
begin
WebBrowser1.Navigate('D:\C\delphi\t.htm');
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
WebBrowser1.OleObject.document.body.scrollTop := 20;
end;
запускаем проект и нажимаем на кнопку.
Чтобы это работало, html-код не должен содержать <!DOCTYPE... об этом уже шла речь. В противном случае работает такой код:
WebBrowser1.OleObject.document.documentElement.scrollTop := 20;
Смотрите обсуждение по ссылке.
dmitry_12_08_73 (2009-07-15 14:11:00) [4]Спасибо, palva, я так понимаю, что перед
WebBrowser1.OleObject.document.body
надо подключить к WebBrowser1 этот OleObject (например Internet Explorer), а как это сделать. Можете пример, если можно показать?
palva (2009-07-15 13:08:00) [5]Наверно проще всего так:
WebBrowser1.OleObject.document.body
Но крутые пацаны работают через интерфейсы. Смотрите примеры здесь:
http://www.cryer.co.uk/brian/delphi/twebbrowser/twebbrowser_oleobject.htm
dmitry_12_08_73 (2009-07-15 11:49:00) [6]palva, скажите, плиз, как из Delphi доступится к document.body
palva (2009-07-14 23:58:00) [7]Если известна величина, на которую надо прокрутить в пикселях, то применяют document.body.scrollTop Это надо аккуратно вытащить из браузера нужные интерфейсы и присвоить соответствующее свойство. Но говорят, если на странице указано DOCTYPE то это может не срабатывать.
Нюансы обсуждают, например, здесь.
http://web-silver.ru/forum/showthread.php?t=9347
dmitry_12_08_73 (2009-07-14 23:42:00) [8]Если можно, напишите пример сообщения для прокрутки веб-страницы
TStas (2009-07-14 23:37:00) [9]Программно можно вызыватьскрипты из страницы, которая загружена в экспролер. Если Вам нужно просто прокрутить страницу, ИМХО, нет разницы, браузер или ещё что-то, handle у Вас точно есть, шлите ему сообщения, как и всякому иному окну.
Я пробовал вызывать функции из скриптов браузера и наткнулся на непонятную мне особенность: им почему-то не получается передавать параметры, как параметры подпрграмм, но можно через глобальные переменные. Если Вам нужно, найду и повешу код.