我正在开发一个信息亭风格的应用程序,我需要在按下电源按钮时控制 PC 的关机/重启。多亏了这篇文章,我已经完成了大约 90% 的工作。
- 在控制面板中将 acpi 电源按钮按下操作设置为关机。
- 监听 WndProc 消息 WM_QUERYENDSESSION
收到问题后,完全没有记录:
[DllImport("user32.dll", SetLastError = true)] static extern int CancelShutdown();
从 WndProc 返回并显示我自己的消息框,要求用户关闭/重新启动或取消,并响应他们的操作。
如果我从任务栏启动/关闭一切都很好(我可以尽可能快地发布论文)。当我第一次按下电源按钮时,一切都运行良好。尽管在收到 WM_QUERYENDSESSION 消息之前我看到一分钟左右的延迟,但在随后按下电源按钮时。
是否有关于 Windows 多久发出 ACPI 事件的设置或注册表项?我知道这不是硬件,因为在 linux 下,同一台机器会尽可能快地触发 ACPI 事件,因为我可以按下按钮。
谢谢。