Текущий архив: 2004.01.13;
Скачать: CL | DM;
ВнизУправление Internet Explorer Найти похожие ветки
← →
PVOzerski (2003-11-10 13:14) [0]Мне на своей халтуре приходится набивать через обычные браузеры базу данных. При этом user interface этой БД сделан не слишком удобно. В частности, приходится выделять помногу элементов в MultiSelect ListBox"ах на Web-странице, притом вручную предписывается делать то, что вполне поддается алгоритмизации. Естественно, я попытался это дело автоматизировать: находить в окошке браузера нужнве ListBox"ы и программно выставлять selected в нужных позициях. Делал это так: искал из своей программы дочерние элементы класса ListBox (или подобных) в окошке браузера, проверял число элементов (оно постоянно для нужных мне) и посылал им LB_SETSEL. Для Netscape 4.x этот трюк прошел "на ура". Но программкой заинтересовались мои коллеги, а они сидят в IE. А там дело оказалось хуже: я тоже смог выделять элементы ListBox"а, однако только с точки зрения "на экране", но не для IE: при передаче введенного удаленному CGI-приложению он сообщает ему только то, что введено "вручную". Не хочется мне заниматься эмуляцией ввода с мыши или даже c клавиатуры, нет ли более разумных путей? Вдруг кто с подобной задачей сталкивался?
← →
panov (2003-11-10 13:47) [1]Как я понял, данные в достаточной мере структурированы, поэтому
меня простое преложение - обрабатывать запросы ир езультаты не браузером, а простыми сокетами.
← →
PVOzerski (2003-11-10 13:57) [2]2 panov[1]: боюсь, от браузеров не уйти. Помимо "стабильных" полей для ввода, есть еще и "вариабельные", так что тогда придется писать практически свой браузер, по меньшем мере - очень интеллектуального клиента - не очень хочется :^(... Может, как-нибудь эксплорером через OLE управлять можно или что-нибудь подобное?
← →
Романов Р.В. (2003-11-10 14:03) [3]А саму страницу поправить нельзя? Скриптов всяких умных добавить.
← →
BizonWar (2003-11-10 14:05) [4]Конечно, можно. Посмотри объектную модель IE. Кроме того, компонент TWebBrowser - это есть обычный IE. я не ковырялся в его исходниках, но на сколько я понял - он просто поднимает IE и с ним работает. У меня получилось обращаться ко всем объетам их свойствам и методам.
← →
PVOzerski (2003-11-10 15:17) [5]Следующий дурацкий вопрос: а как найти именно то окно, эксплорера, которое мне нужно, если открыто несколько. А нужно активное окно, в то время как после выполнения IE:=GetActiveOleObject("InternetExplorer.Application") я получаю доступ к 1-му запущенному окну. Можно ли добраться до интересующего (доступны и уникальны заголовок и, естественно, hwnd)?
← →
BizonWar (2003-11-10 15:42) [6]А обязательно к уже открытому окну обращаться?
Может такой вариант подойдет?
procedure TForm1.Button1Click(Sender: TObject);
var IE:OleVariant;
begin
IE:=CreateOleObject("InternetExplorer.Application");
IE.Visible:=true;
IE.Navigate(" Http://www.mail.ru");
end;
← →
PVOzerski (2003-11-10 16:04) [7]2BizonWar:
Нет, такой вариант неудобен. Я, на самом деле, уже кое-что отыскал на эту тему, но легче с того особо не стало. Проблема, оказывается, решается через интерфейс IShellWindows, но в тех версиях Delphi, что у меня под рукой, он не реализован в RTL.
В примерах же всё вот такое:
function GetActiveIEBrowser: IWebBrowser2;
var
shellWindows: IShellWindows;
i: Integer;
webBrowser: IWebBrowser2;
begin
Result:= nil;
shellWindows:= CoShellWindows.Create;
for i:=0 to shellWindows.Count -1 do
if Supports(shellWindows.Item(i), IWebBrowser2, webBrowser) then
А CoShellWindows у меня просто нет, ни в каком юните RTL. Может, кто поделится по E-Mail нужным кусочком?
← →
BizonWar (2003-11-10 16:17) [8]Если не то послал, то что именно нужно?
← →
nikkie (2003-11-10 19:01) [9]>PVOzerski
что-то мне кажется Вы куда-то не туда двинулись... вот это читали?
http://www.delphikingdom.ru/mastering/tweb.htm
← →
PVOzerski (2003-11-11 15:19) [10]2all: все получилось, особое спасибо BizonWar!
Страницы: 1 вся ветка
Текущий архив: 2004.01.13;
Скачать: CL | DM;
Память: 0.46 MB
Время: 0.008 c