Форум: "Начинающим";
Текущий архив: 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.004 c