如何控制电源按钮按下关机?

问题描述 投票:8回答:2

我正在使用信息亭式的应用程序,需要在按下电源按钮时控制PC的关闭/重新启动。多亏了此post,我才有90%的路程。

  1. 在控制面板中,将acpi电源按钮按下操作设置为关闭。
  2. 收听WndProc消息WM_QUERYENDSESSION
  3. [当收到问题时,完全没有记录:

    [DllImport("user32.dll", SetLastError = true)]
    static extern int CancelShutdown();
    
  4. 从WndProc返回并弹出我自己的消息框,要求用户关闭/重新启动或取消,并响应他们的操作。

如果我从任务栏中执行启动/关闭操作,那么一切都很好(我可以根据需要尽快发布论文)。第一次按下电源按钮时,一切都正常。在随后按下电源按钮时,虽然我收到WM_QUERYENDSESSION消息之前看到一分钟左右的延迟,但仍会出现。

是否存在有关Windows多久发布一次ACPI事件的设置或注册表项?我知道这不是硬件,因为在Linux下,同一台计算机将以我可以按的最快速度触发ACPI事件。

谢谢。

我正在使用信息亭式的应用程序,需要在按下电源按钮时控制PC的关闭/重新启动。多亏了这篇文章,我已经完成了90%的工作。在控制中...

c# winapi wndproc acpi windows-7-embedded
2个回答
3
投票

[在工作中帮了忙,我能够直接将这个问题带到Microsoft支持。在我的第三位支持工程师上,我基本上被告知在应用程序级别


0
投票

我认为除非您与您的硬件制造商交谈或对启动按钮进行硬接线,以免它不会将信号发送到处理此问题的硬件,否则是不可能的。您只能延迟它,但即使这样也不能给您100%的保证。

© www.soinside.com 2019 - 2024. All rights reserved.