OSX - Как я могу прочитать значок приложения из другого процесса? - PullRequest
0 голосов
/ 06 июня 2019

В OSX приложения могут иметь значки, обычно используемые для отображения количества уведомлений. Из другого процесса я хотел бы прочитать значок приложения. У меня нет контроля над самим приложением. Как можно прочитать значок?

Badge in slack

Для чуть большего контекста: я создаю виджет сенсорной панели для OSX Mojave, который отображает значок на сенсорной панели, когда есть непрочитанные сообщения в бездействии. Причина, по которой я не хочу использовать слабый API, связана с сетевыми издержками: приложение Slack уже справляется с этой сетью, и поэтому я не хочу тратить трафик на дополнительные запросы. Я бы предпочел общий метод, но если есть решение для слабины, это нормально. Ответы на любом языке приемлемы.

Перехватывать отправленные уведомления из приложения Electron имеет отношение, но запрашивает перехват уведомлений, а не прямой запрос значков.

1 Ответ

0 голосов
/ 09 июня 2019

Вы можете использовать API AppKit. Рабочее решение было найдено здесь: https://github.com/pigigaldi/Pock/blob/master/Pock/Private/PockDockHelper/PockDockHelper.m

На высоком уровне вы создаете копию дока как AXUIElementRef, используя AXUIElementCreateApplication. Это требует, чтобы приложение было авторизовано в настройках специальных возможностей. Оттуда вы можете использовать AXUIElementCopyAttributeValue с kAXStatusLabelAttribute для чтения значка.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...