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

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

Как в IE получить доступ к строке адреса


Delfin ©   (2001-11-21 12:39:00) 

Нужно достать оттуда текст, обработать и вновь поместить.


Vic_774   (2001-11-21 19:48:00) [1]

Freezer прав. Но иногда получаются такие грабли:
находим окно, находим нужное подчиненное окно

В Delphi: Unit1.pas -> TEditWindow - TPanel - TPanel - TEditControl(а здесь текст той программы которую пишешь) )
ну так вот ниже приведенный текст работает, но результат не то что нужен !!!
текст заносится и читается ... куда-то в окно но видимых изменений нет

procedure TForm1.Button1Click(Sender: TObject);
var
h:hwnd;
buf:PChar;
begin
h:=FindWindow(" сюда класс окна ",nil); для Delphi (класс = TEditWindow)
h:=GetWindow(h,GW_CHILD); //
h:=GetWindow(h,GW_HWNDNEXT); // лишнее убрать !!!
h:=GetWindow(h,GW_CHILD); //
h:=GetWindow(h,GW_CHILD); //

LengthText:=GetWindowTextLength(H)+1;
GetMem(buf,LengthText);
GetWindowText(H,Buf,LengthText);
Memo1.Text:=StrPas(Buf);
FreeMem(Buf);

SendMessage(h, WM_SETTEXT, 0, Integer(PChar("TEST")));

end;

Попробуйте сами. Если кто разберется в проблеме пишите сюда и на mail vic_774@chat.ru


ASTARD   (2001-11-21 18:46:00) [2]

вариант конечно хорошо но есть еще один (возможно больше) стои только почитать фак на этом сайте =) вот так вот !


Freezer   (2001-11-21 15:04:00) [3]

Писал когда-то подобное...
Кода с собой нету, но смысл такой:
1. Открываешь IE.
2. Открываешь WinSight.
3. Смотришь иерархию объектов окна IE. Запоминаешь имена классов и названия окон.
4. Теперь программно при помощи FindWindow() и GetWindow() рекурсивно спускаешься до окна строки адреса, берешь ее Handle.
5. Посылаешь message WM_GETTEXT.
6. Обрабатываешь его.
7. Посылаешь message WM_SETTEXT. Ну еще и "WM_KEYDOWN" (точно не помню), ну короче нажатие клавиши <Enter> (если нужно конечно).

Смысл вот такой... Кто предложит вариант получше, тоже интересно будет почитать.


Наверх

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