Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Системное программирование и WinAPI > Работа с IAccessible


Автор: kurlyak 14.3.2015, 10:35
Вобщим, есть такой код, когда наводишь мышу в Internet Explorer на текст- в программе этот текст высвечиввется. Смысл в том, что я ищу путь, что бы получить слово под курсором мыши в браузере. Получается только в IE пока через IAccessible, вот код. Но факт в том, что этот код получает не слово под курсором мыши, а целую строку или абзац. Как сделать, что бы находить слово под курсором мыши в этом абзаце? Мне кажется надо копать в сторону accHitTest и get_accChild то есть получить Child (одно слово из текстовой строки которая вернулась) и проверить на HitTest но я не знаю как это сделать. Как вобще замутить эту тему? 

Код

CString Name;

CPoint CursorPos;
GetCursorPos( &CursorPos );
   
IAccessiblePtr pIAcc;
_variant_t vt;
   
BSTR pName = NULL;
BSTR pValue = NULL;

if( SUCCEEDED( AccessibleObjectFromPoint( CursorPos, &pIAcc, &vt )))
{
pIAcc->get_accChild(
BSTR pName = NULL;
if( SUCCEEDED( pIAcc->get_accName( vt, &pName )))
{
if( pName && ::SysStringLen( pName ))
{
Name = pName;
}
::SysFreeString( pName );
}
}

Автор: vol4ek 14.3.2015, 11:41
как минимум, скопировать строку под курсором в переменную типа CString. также знать положение курсора в строке. Сделать GetAt() тем самым получить символ, надь которым  находится курсор. Далее в цикле делаем GetAt() влево и вправо пока не встретим пробел. далее думаю сами знаете что делать.  smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)