Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2012.04.22;
Скачать: [xml.tar.bz2];

Вниз

Програмно узнать все интерфейсы объекта.   Найти похожие ветки 

 
Plast   (2011-12-28 15:27) [0]

Вкратце есть интерфейс IAccessible полученный вот таким способом:

procedure TForm1.tmrTimer(Sender: TObject);
var
 lAcc: IAccessible;
 lAccCh: OleVariant;
 Par: idispatch;
 lRes: Integer;
 lName, lVal: WideString;
 lAccChildCount: Integer;

begin
 if Failed( AccessibleObjectFromPoint( Mouse.CursorPos, lAcc, lAccCh ) ) then
   exit;
end;

Каким образом, можно узнать все интерфейсы, которые объект, скрывающийся за lAcc, еще поддерживает?


 
Сергей М. ©   (2011-12-28 15:33) [1]

Никаким, если сам объект так или иначе не предоставляет соответсвующей функциональности.


 
Dimka Maslov ©   (2011-12-28 15:42) [2]

Все, конечно же, нельзя. Но можно составить список интерфейсов, которые предположительно поддерживаются, и через QueryInterface проверить каждый из них.


 
Юрий Зотов ©   (2011-12-28 15:42) [3]

IAccessible документирован в MSDN - там все и узнать.


 
Plast   (2011-12-28 15:44) [4]

Я просто не очень понимаю всей системы но вот, таким способом

procedure TForm1.tmrTimer(Sender: TObject);
var
lAcc: IAccessible;
lAccCh: OleVariant;
Par: idispatch;
lRes: Integer;
lName, lVal: WideString;
lAccChildCount: Integer;

begin
if Failed( AccessibleObjectFromPoint( Mouse.CursorPos, lAcc, lAccCh ) ) then
  exit;
lAcc.Get_accName( lAccCh, lName);
lAcc.Get_accSelection( lAccCh);
lAcc.Get_accName( lAccCh, lVal);
lAcc.Get_accValue( lAccCh, lVal);
mem.Text := lName+ sLineBreak + "***" + sLineBreak +lVal {+ sLineBreak + IntToStr( lAccChildCount )};
end;

можно вытянуть текст с Internet Explorera на сколько мне хватает понимания, текс тянется из какогото htmlElementa но если попробовать привести
HtmlElem:= lAcc as IHtmlElement; то при наведении на текст в IE выдает что интерфейс не поддерживается. Вот либо я что-то не то делаю, либо так сделать невозможно?


 
Юрий Зотов ©   (2011-12-28 15:48) [5]

> можно вытянуть текст с Internet Explorera

Не только с Internet Explorera. Так можно вытянуть текст с любого оконного контрола, который поддерживает IAccessible. Например, из EDIT.

> насколько мне хватает понимания, текс тянется из какогото htmlElementa

Исходя из предыдущего, HTML тут ни при чем.


 
Plast   (2011-12-28 15:53) [6]

Так вот мне нужно именно из IE тянуть, я бы конечно мог вытянуть через сам IE,
ну там Document.all.tags("bla bla").innertext да токо вот беда, если в страницу подгружен фрейм с другого домена, то есть URL отличается от основной страницы, из-за Cross Domain Policy (так кажется она называется) експлорер блокирует такие попытки.


 
Dimka Maslov ©   (2011-12-28 16:01) [7]

У IHtmlDocument2 есть свойство Frames, через которое и надо работать.


 
Plast   (2011-12-29 18:59) [8]


> Dimka Maslov


Спасибо за второй ответ!



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2012.04.22;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.46 MB
Время: 0.002 c
15-1324385736
Zheksonz
2011-12-20 16:55
2012.04.22
Синтаксис языка СИ


2-1325272121
Псарь
2011-12-30 23:08
2012.04.22
Как написать инспектор объектов?


2-1325179999
Антоха_М
2011-12-29 21:33
2012.04.22
Печать чеков из приложения Delphi


2-1325061895
гия
2011-12-28 12:44
2012.04.22
Пграмма "замерзает" пока TThread не завершится


2-1325109344
TThread
2011-12-29 01:55
2012.04.22
TPotok_Com.Terminate





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский