Как определить, когда кнопка питания нажата в какао? - PullRequest
1 голос
/ 22 марта 2011

Я пытаюсь выяснить, как определить, когда пользователь нажимает клавишу питания на клавиатуре.

Я разрабатываю приложение для киоска и хочу запустить процедуру, когда пользователь хочет принудительно выключить компьютер, нажав и удерживая клавишу питания.

Спасибо заранее.

Ответы [ 2 ]

1 голос
/ 22 марта 2011

Нет методов, которые будут вызываться, когда пользователь нажимает и удерживает клавишу питания. Это напрямую обрабатывается аппаратно и даже не направляется на ОС, а тем более на ваше приложение - это равносильно вытягиванию шнура питания.

Лучше всего создать «предпочтительный выключенный» пользовательский ключ настройки или временный файл, который будет удалено вашим приложением в ходе обычной процедуры завершения работы. Когда ваше приложение запускается, оно может проверить его, чтобы увидеть, был ли предыдущий запуск нормально выключен, или коврик выдернул из-под него.

О, и поскольку это киоск, не давайте пользователям физического доступа к выключателю для начала. Иногда самые простые решения являются лучшими!

1 голос
/ 22 марта 2011

Вы не.

С Руководство Apple по обработке событий с какао :

Примечание: нижние уровни системной ловушки и обрабатывать некоторые события в начале Поток событий. Эти события никогда не бывают направляется в приложение Какао. Эти события генерируются зарезервированными ключами или комбинации клавиш, такие как сила и клавиши извлечения носителя.

Вы можете заставить свое приложение выполнить какое-либо действие и / или предотвратить завершение работы с помощью applicationShouldTerminate, что несколько описано на странице документа Graceful Application Termination . Однако это будет не то же самое, что просто ответить на ключевое событие.

Вы также можете использовать флаг NSApplicationPresentationDisableSessionTermination, чтобы просто отключить выход из системы и завершение работы.

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