【问题标题】:Is there a way to programmatically receive if Windows is shutting down or restarting?如果 Windows 正在关闭或重新启动,有没有办法以编程方式接收?
【发布时间】:2014-01-09 06:36:52
【问题描述】:

如果 Windows 正在关闭或正在重新启动,有没有办法捕获?对于关机,我找到了一些解决方案,但不是重启。对我来说,能够确定 Windows 是在重新启动还是正在关闭非常重要。

谢谢!

【问题讨论】:

  • @Sean:我发现了,但我的问题在于这个解决方案,那里描述了什么。例如,如果我创建一个应用程序并且它将重新启动 Windows,会发生什么?然后用户没有选择重启系统,所以无法读取注册表值。
  • 好的。为什么知道关机和重启之间的区别很重要。毕竟,如果用户关闭然后立即重新启动,这基本上是一样的。
  • 不可能知道这一点,真的。 Windows 可能认为它会重新启动,但在机器完成关闭以准备重新启动时关闭机器的情况并不少见。显然,由于此时机器已关闭,因此您无法检测到。
  • 您会从 WM_QUERYENDSESSION 通知中获得一点信息。 Windows 强烈避免告诉您太多有关关机原因的信息,它不能保证(例如)睡眠或休眠将允许操作系统从保存的状态重新启动。无法确保实际会发生重启。

标签: c++ windows


【解决方案1】:

有一种方法可以检测它是否正在关闭,也有一种方法可以检测它何时启动。

所以,你可以记下时间when it is shutting down。通过在启动时运行 exe 来记录它的启动时间(在注册表中添加您的 exe:HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\RunOnce)。

如果时间差非常小,则可以将其视为“重新启动”。

您也可以使用WTSRegisterSessionNotification api 获取确切的事件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-13
    • 1970-01-01
    • 2021-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多