我正在试图弄清楚当用户按下键盘上的电源键时如何检测。
我正在开发一个自助服务终端应用程序,当用户想要通过按住电源键强制关闭计算机时,我想运行例程。
提前谢谢你。
答案 0 :(得分:1)
你没有。
来自Apple's Cocoa Event Handling Guide:
注意:较低级别的系统陷阱 并在早期处理一些事件 事件流。从来没有这些事件 路由到Cocoa应用程序。这些 事件由保留键生成 或键组合,如电源 和媒体弹出键。
您可以让应用程序执行某些操作和/或阻止applicationShouldTerminate
关闭,Graceful Application Termination doc页面略介一下。但这与仅响应关键事件并不完全相同。
您也可以使用NSApplicationPresentationDisableSessionTermination
标志禁用注销和关闭。
答案 1 :(得分:1)
当用户按下并按住电源键时,不会调用任何方法。它直接在硬件中处理,甚至不会被路由到操作系统,更不用说应用程序了 - 它相当于拔电源线。
最好的办法是创建一个“干净关闭”用户首选项键或临时文件,您的应用程序将在正常关机过程中删除该文件。当你的应用程序启动时,它可以检查它是否正常关闭以前的运行,或者是否从它下面拉出了地毯。
哦,因为这是一个自助服务终端 - 所以不要让用户开始物理访问电源开关。有时最简单的解决方案是最好的!