Модераторы: MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> как работать с IE запущенным в качестве сервера, IE запустило другое приложение 
:(
    Опции темы
SP@wn
Дата 8.1.2005, 14:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 4.11.2004

Репутация: нет
Всего: нет



необходимо нажать кнопку Submit в Internet Explorer запущенным в качестве сервера другим приложением.
PM MAIL   Вверх
p0s0l
Дата 8.1.2005, 15:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: 6
Всего: 112



Примерно так:
Код

var
 isw : IShellWindows;
 wb2 : IWebBrowser2;
 doc : IHTMLDocument2;
 col : IHTMLElementCollection;
 f : IHTMLFormElement;
 i : integer;

begin
 isw := CoShellWindows.Create;
// isw.Count - число окон IE в системе
 if isw.Count = 0 then Exit;

// если знаешь хэндл окна IE, то перебери все isw.Item(i),
// и проверяй у каждого isw.Item(i).HWND
// а так для примера возьмём первое окно
 wb2 := isw.Item(0) as IWebBrowser2;
 doc := wb2.Document as IHTMLDocument2;

 col := doc.forms;
//  в col.length будет количество форм на странице

// для примера берем вторую форму, и жмем в ней Submit
 i := 1;
 f := col.item(i, i) as IHTMLFormElement;
 f.submit;
end;



--------------------
С уважением, г-н Посол.
PM   Вверх
SP@wn
Дата 9.1.2005, 02:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 4.11.2004

Репутация: нет
Всего: нет



в isw : IShellWindows; не видно окна запущенные с помощью компонента TWebBrowser которые какрас и нужно найти.
PM MAIL   Вверх
p0s0l
Дата 9.1.2005, 12:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: 6
Всего: 112



Хм... Значит браузер не был зарегистрирован в системе...
(У IWebBrowser2 есть свойство RegisterAsBrowser, если он False, то через IShellWindows его не найти...)
Тогда не знаю... smile


Добавлено @ 12:59
Как вариант - имитировать нажатия кнопок (жмешь Tab'ы, пока фокус не встанет на кнопке, потом Enter)...
Но для этого нужно знать точно сколько раз Tab жать, и самое главное - знать, где сейчас находится фокус в документе...


--------------------
С уважением, г-н Посол.
PM   Вверх
SP@wn
Дата 9.1.2005, 13:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 4.11.2004

Репутация: нет
Всего: нет



а по хэндлу можно найти?
PM MAIL   Вверх
p0s0l
Дата 9.1.2005, 14:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: 6
Всего: 112



Если ты про хэндл кнопки Submit - насколько я знаю - нет...



--------------------
С уважением, г-н Посол.
PM   Вверх
SP@wn
Дата 9.1.2005, 14:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 4.11.2004

Репутация: нет
Всего: нет



По хэндлу окна.
PM MAIL   Вверх
p0s0l
Дата 9.1.2005, 17:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: 6
Всего: 112



Тебе нужно получить интерфейс IWebBrowser2.
Но его ты сможешь получить лишь через IShellWindows...
Иначе - я не знаю друго способа.
Если только влезать в чужой процесс...
Зная хэндл окна TWebBrowser, можно получить адрес объекта TWebBrowser в чужом процессе. Потом надо сделать TWebBrowser.RegisterAsBrowser := True (опять же в чужом процессе), но для этого нужно знать адрес функции TOleControl.SetWordBoolProp... Вот как узнать этот адрес - не знаю, надо думать, пораскинуть мозгами...
Тогда уже можно юзать IShellWindows в своём приложении...
( и это подойдёт лишь в случае, если та чужая прога написана на Delphi )


--------------------
С уважением, г-н Посол.
PM   Вверх
SP@wn
Дата 14.1.2005, 14:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 12
Регистрация: 4.11.2004

Репутация: нет
Всего: нет



а можно самому зарегистрировать IE, в обход TWebBrowser?
И если да то что для этого нужно?
PM MAIL   Вверх
p0s0l
Дата 14.1.2005, 15:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Г-н Посол
****


Профиль
Группа: Экс. модератор
Сообщений: 3668
Регистрация: 13.7.2003
Где: 58°38' с.ш. 4 9°41' в.д.

Репутация: 6
Всего: 112



У IShellWindows есть метод толи Register толи еще какой, не помню, но я так тогда понял, что как раз для регистрации браузера он и нужен.
Но там в параметрах нужно указывать адрес IWebBrowser интерфейса, только откуда его можно узнать ? Если знать адрес IWebBrowser, то легче у него сделать RegisterAsBrowser, чем делать это через IShellWindows...



--------------------
С уважением, г-н Посол.
PM   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: ActiveX/СОМ/CORBA"

Rrader
Girder

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Delphi
  • Вопросы по SQL и вопросы по базам данных, не связанные с Delphi, задавать здесь

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Rrader, Girder.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: ActiveX/СОМ/CORBA | Следующая тема »


 




[ Время генерации скрипта: 0.1132 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.