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

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

Поиск текста в окне IE [D7, WinXP]


Yegorchic ©   (2004-06-27 03:57:00) 

Здрасте... Не подскажите как узнать существует ли определённый текст в открывшимся окне IE?


ЮрийК   (2004-06-27 17:02:00) [1]

Есть следующая задача - найти слово (фразу - во фразе слова не обязательно разделяются одним пробелом, где-то может быть и два пробела например) в вебброузере, далее селектировать найденное.

Какой можете предложить алгоритм для реализации?


Ihor Osov'yak   (2004-06-27 13:02:00) [2]

Задачу следует разбить на две подзадачи.
1. Получение интерфейса IHtmlDocument2 от документа в IE/
2. Имея IHtmlDocument2 задачу можно решить несколькими способами. Один из них - получить IHtmlElement от тега body и воспользоваться методом get_InnerText.

как ввод в тему по п2. delphi.vitpc.com\mastering\tweb.htm
по п1. -  в ИЕ ищем окно с именем класса Internet Explorer_Server,

далее примерно так -

type
 TObjectFromLResult = function(LRESULT: lResult; const IID: TIID; WPARAM:
   wParam; out pObject): HRESULT; stdcall;

const
 MSG: Integer = 0;
 hInstLib: HWND = 0;
 ObjectFromLresult: TObjectFromLresult = nil;

function GetIDocFromHWND(WHandle: HWND; var iDoc: IHtmlDocument2): HRESULT;
var
 lRes: Cardinal;
begin
 Result := S_FALSE;
 if hInstLib = 0 then
   hInstLib := LoadLibrary('Oleacc.dll');
 if not assigned(ObjectFromLresult) then
   @ObjectFromLresult := GetProcAddress(hInstLib, 'ObjectFromLresult');
 if @ObjectFromLresult <> nil then
 begin
   try
     if MSG = 0 then
       MSG := RegisterWindowMessage('WM_HTML_GETOBJECT');
     SendMessageTimeOut(WHandle, MSG, 0, 0, SMTO_ABORTIFHUNG, 1000, lRes);
     Result := ObjectFromLresult(lRes, IHTMLDocument2, 0, iDoc);
   finally
     //FreeLibrary(hInst);
     //hInst := 0;
     
   end;
 end;
end;


Наверх

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