Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Программное управление 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 у Вас точно есть, шлите ему сообщения, как и всякому иному окну.
Я пробовал вызывать функции из скриптов браузера и наткнулся на непонятную мне особенность: им почему-то не получается передавать параметры, как параметры подпрграмм, но можно через глобальные переменные. Если Вам нужно, найду и повешу код.


Наверх

Титульная страница Поиск, карта сайта Написать письмо