В качестве отправной точки вы можете взглянуть на код QuickCursor . Он извлекает текст из множества различных приложений через AX Accessibility API . Теперь он не будет захватывать размещение слова в пикселях, но по крайней мере вернет строку NSString, связанную с текстом в этом элементе пользовательского интерфейса. Конечно, это означает, что рассматриваемое приложение должно поддерживать эти API; Я не знаю, если бы MS Office Suite. Кроме того, он поддерживает только редактируемые элементы, поэтому не редактируемая веб-страница в Safari также не будет работать. Но это может дать вам отправную точку для некоторых идей.
Взгляните на QCUIElement.{m,h}
, а затем на реализацию в QCAppDelegate.m
(beginQuickCursorEdit:
) ... реализация его абстрактного QCUIElement выглядит так же просто, как:
QCUIElement *focusedElement = [QCUIElement focusedElement];
id value = focusedElement.value;
Редактировать : Ага! Ознакомьтесь с примером кода инспектора специальных возможностей: UIElementInspector . На самом деле он может получить AXPosition элементов на странице. Теперь это не слово в слово, но мы все ближе. Он сообщит вам о расположении текстового блока по x, y, а также о словах, содержащихся в текстовом блоке.