2012-10-30 3 views
0

Я хочу попробовать некоторые программы Mac, создав простую фоновое приложение, которое записывает всю историю текста, которую пользователи выделяют в других приложениях, будь то в PDF, текстовом документе или веб-странице (звучит глупо, но для меня это очень полезно). Является ли это возможным?Mac программирования: Получите выделенный текст в приложении?

ответ

1

Это невозможно в общем случае и безумно сложно даже при рассмотрении приложений по одному. Это может быть достигнуто для некоторых приложений с введением кода (но это безумно хрупко), и теоретически может быть сделано для некоторых приложений с использованием AppleScript (но только в том случае, если приложение вам поможет).

Гораздо более распространенным является создание Services, что позволяет вам интегрироваться с другими карточками приложений (с вмешательством пользователя). Но практически никакие приложения не выставляют API для их выделения.


@nielsbot задает интересный вопрос, и, возможно, это подход. Вы должны позвонить AXUIElementCreateSystemWide, чтобы создать общесистемный объект доступности, а затем добавить себя в качестве наблюдателя, ожидающего kAXSelectedTextChangedNotification. Вероятно, это работает для доступных приложений (большинство приложений, которые используют стандартные виджеты). Поэтому стоит исследовать.

+1

Вы можете сделать это с помощью API-интерфейсов доступности? – nielsbot

+0

Я просмотрел API Accessibility и попытался использовать Accessibility Inspector для проверки пользовательских интерфейсов некоторых обычных приложений, таких как Chrome, SublimeText. В этих приложениях не было информации о выбранном тексте. Интересно, как это делают приложения Apple, такие как Dictionary. –

+0

Словарь обычно использует Сервис. Простое выделение текста не приводит к тому, что приложение Dictionary может изменить свою информацию. –

Смежные вопросы