Re[2]: как управлять работой IE? - маленькое дополнение
От: Ihor Osovyak Украина  
Дата: 20.06.04 10:32
Оценка:
Здравствуйте, Flamer, Вы писали:

F>Здравствуйте, jer2, Вы писали:


J>>доброго времени суток


J>>задача такая: открыть IE, ввести ему нужный урл и перейти по нему (с этим справился), а дальше надо как-то автоматически заполнить поля формы и нажать сабмит. Как получить загрузившийся документ разобрался, а вот как что-то в нём набрать, нажать?


F>В общем, если у вас есть IHTMLDocument2*, то можно получить у него коллекцию форм (IHTMLDocument2::get_forms), затем для каждого элемента коллекции получить IHTMLFormElement*, пройтись по всем полям (IHTMLFormElement::length и IHTMLFormElement::item), для каждого элемента получить его тип (например, привести полученный с помощью IHTMLFormElement::item IDispatch* к IHTMLInputTextElement), сделать, что нужно (заполнить текстом, например), а потом вызвать IHTMLFormElement::submit.


F>Вот такой алгоритм. Если что непонятно, то можно запустить поиск по сайту, введя в строку поиска один из упоминающихся интерфейсов и сразу найдутся даже куски кода, которые я неоднократно постил в ответ на подобные вопросы. Удачи.



Один из способов запустить IE и получить интерфейс IWebBrowser2 в свои руки (имея IWebBrowser2 очень просто добраться к IHTMLDocument2) — (примеры — на делфи, в случае необходимости реализации на си — ищите по именам функций, методов и интерфейсов)

var
iWB: IWebBrowser2;
..
iWB := CreateOleObject('InternetExplorer.Application.1') as IWebBrowser2;
iWB.Set_Visible(TRUE);


далее запускаем навигацию


var
ov: olevariant;
..
ov := 'www.google.com';
iWB.Navigate2(ov, emptyparam, emptyparam, emptyparam, emptyparam);

по окончании навигации у iWB.Document попросим через QueryInterface дать нам IHTMLDocument2, далее — см. Flamer
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.