Re[2]: Тип элемента окна
От: st0nx  
Дата: 15.09.10 13:31
Оценка:
Немного не могу понять как с этим работать. Делаю так:



//hWnd - хендл элемента
IAccessible* iWnd;
VARIANT idChl;
VariantInit(&idChl);
VARIANT varResult;
AccessibleObjectFromWindow(hWnd, 0, IID_IAccessible, (LPVOID*)&iWnd);
iWnd->get_accRole(idChl,&varResult);
printf("Role = %d\n\r",varResult.lVal);



AccessibleObjectFromWindow и get_accRole выполняются нормально. При обходе всех элементов окна Outlook например, получаю одинаковое значение 9.

Видимо, что то не до понял из msdn...

Здравствуйте, mr.pavel, Вы писали:

MP>MSAA

MP>Oleacc.h

MP>MSDN for details



MP>
MP>Accessible: IAccessible;
MP>..
MP>if Succeeded(AccessibleObjectFromWindow(AWnd, ..,..IAccessible, Accessible)) then

MP>  Role := Accessible.get_accRole(....)
MP>


MP>and check the Role against:


MP>ROLE_SYSTEM_TEXT

MP>ROLE_SYSTEM_DROPLIST
MP>ROLE_SYSTEM_COMBOBOX
MP>ROLE_SYSTEM_COLUMN
MP>ROLE_SYSTEM_COLUMNHEADER
MP>..
MP>and so on


MP>Здравствуйте, st0nx, Вы писали:


S>>Возникла необходимость определить тип элемента управления(ListBox, ComboBox, Button...) чужого окна, имея его идентификатор(handle)

S>>Пробовал определять по классу или\и по стилю. Но например некие элементы из окна MS Office Outlook:

S>>
S>>MsoCommandBar 56000000
S>>MsoCommandBar 46000000
S>>


S>>Это имя класса и его стиль. В общем, вопрос в том: каким еще образом можно определить, какой это элемент управления, если используется нестандартный класс при его создании?
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.