Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 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.49 MB
Время: 0.022 c
1-37775
Proglam-ma
2003-12-29 15:49
2004.01.13
Динамика в Записях


3-37512
Крутыш
2003-12-16 16:49
2004.01.13
Про AdoDataset .....


7-37946
h0use
2003-10-30 12:30
2004.01.13
Как узнать что нужное приложение запущено?


1-37613
Byte
2003-12-24 13:49
2004.01.13
Как зарегистрировать для своего компонента ComponentEditor от дру


1-37651
Эдуард
2003-12-26 11:32
2004.01.13
Создание компонента в DLL