Программно определить, установлен ли флажок "разрешить доступ для вспомогательных устройств" в приложении Какао

Приложения какао, использующие API-интерфейс NSAccessibility, требуют, чтобы "разрешить доступ для вспомогательных устройств" был проверен на предварительной панели Universal Access. Я видел, как многие приложения выдают предупреждение, если они отключены при запуске. Как программно проверить, включена ли эта функция, чтобы в моем приложении отображалось предупреждение?

2 ответа

Решение

Я думаю, что вы ищете AXAPIEnabled(),

extern Boolean AXAPIEnabled ();  

Цитирование документов:

Возвращает, включен ли API доступа.

Возвращает TRUE, если API доступа в настоящее время включен, иначе FALSE.

Вспомогательные приложения не будут работать, если API специальных возможностей не включен или если вызывающий процесс не является доверенным клиентом специальных возможностей. Пользователи могут включить API специальных возможностей, установив флажок "Включить доступ для вспомогательных устройств" в настройках универсального доступа.

В OS X 10.9 Mavericks, AXAPIEnabled() был объявлен устаревшим

AXIsProcessTrustedWithOptions можно использовать вместо:

NSDictionary *options = @{(id)kAXTrustedCheckOptionPrompt: @YES};
BOOL accessibilityEnabled = AXIsProcessTrustedWithOptions((CFDictionaryRef)options);

Если вы проходите в YES за kAXTrustedCheckOptionPromptсистема покажет пользователю полезный маленький диалог со ссылкой на Системные настройки:

"YourApp.app хотел бы управлять этим компьютером с помощью специальных возможностей".

Другие вопросы по тегам