Главная страница
    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
3-1274783943
Phoenix
2010-05-25 14:39
2012.04.22
Помогите составить запрос...


2-1324922178
upc
2011-12-26 21:56
2012.04.22
Строковая константа больше 255 символов


15-1324363262
oxffff
2011-12-20 10:41
2012.04.22
Может кто поделиться БД(продуктов и их иерархии) с фото


2-1325178292
Gu
2011-12-29 21:04
2012.04.22
SizeOf


15-1323861558
картман
2011-12-14 15:19
2012.04.22
зима пришла...





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