Я работаю над приложением типа киоска, где мне нужно контролировать выключение/перезагрузку ПК при нажатии кнопки питания. Благодаря этому post, я около 90% пути.Как отключить нажатие кнопки питания?
- На панели управления установите кнопку включения питания acpi для выключения.
- Прослушайте сообщение WM_QUERYENDSESSION WndProc
При получении выпуска был полностью недокументированным:
[DllImport("user32.dll", SetLastError = true)] static extern int CancelShutdown();
Возвращения из WndProc и воспитывать свое собственное окно сообщения с запросом пользователя Shutdown/Restart или Отмену, реагировать на их действия.
Все работает хорошо, если я запускаю/выключаю из панели задач (я могу выпускать тезисы так быстро, как я хочу). Все работает хорошо, когда я нажимаю кнопку питания. На следующей кнопке питания нажмите, хотя я вижу минуту или около того задержки, прежде чем я получу сообщение WM_QUERYENDSESSION.
Есть ли параметр или запись в реестре о том, как часто окна выдают событие ACPI? Я знаю, что это не аппаратное обеспечение, потому что под Linux один и тот же компьютер будет запускать событие ACPI так же быстро, как я могу нажать кнопку.
Спасибо.
Обратите внимание, что я не пытаюсь подключить аппаратное завершение, которое происходит, если вы удерживаете кнопку питания. Я хочу, чтобы выключение событий acpi произошло, когда вы нажимаете кнопку. ОС, безусловно, умеет подключить это событие и отключиться изящно, почему я не могу? – Mark
Mark У вас был какой-то прогресс в этом вопросе? У меня такая же проблема для Windows 7. – RcMan