Главная страница
    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-1323981002
Юрий
2011-12-16 00:30
2012.04.22
С днем рождения ! 16 декабря 2011 пятница


2-1325071675
Plast
2011-12-28 15:27
2012.04.22
Програмно узнать все интерфейсы объекта.


2-1323823424
Валентина
2011-12-14 04:43
2012.04.22
распределение средств между предприятиями


15-1324138253
Кто б сомневался
2011-12-17 20:10
2012.04.22
Аномальная погода


2-1324738361
Евгений07
2011-12-24 18:52
2012.04.22
ADODataSet узнать тип поля





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский