【问题标题】:Detecting computer/program shutdown in Python?在 Python 中检测计算机/程序关闭?
【发布时间】:2013-04-22 07:12:34
【问题描述】:

我有一个循环运行的 Python 脚本,它会定期调整我的照明系统。当我关闭计算机时,我希望我的脚本能够检测到这一点,并完全关闭灯。

如何在 Python 中检测到我的计算机开始关闭?

或者,假设 Windows 向 Python 发送“关闭时间”通知,我如何拦截它以杀死我的灯并退出循环?

【问题讨论】:

  • 嗨,Crummy,关于如何用代码实际实现某些东西的问题属于 StackOverflow(管理员应该能够迁移它)。

标签: python windows


【解决方案1】:

这是在系统关闭时执行操作的错误方法。关闭进程的工作是停止正在运行的进程,然后关闭电源;如果你试图从你的程序中检测到这种情况并通过采取一些最后的行动来做出反应,这是操作系统和你的程序之间的竞赛,谁先走。您的程序很可能在它设法执行必要的操作之前就已经停止了。

相反,您应该挂接到正常的协议以在关机时执行操作。这将告诉关闭实用程序向您的程序发送一个明确的信号并等待它被确认,这会给您足够的时间(在合理范围内)来做您必须做的事情。具体如何注册以收到通知因操作系统而异,因此这更像是一个特定于操作系统的问题,而不是 Python 问题。

【讨论】:

    【解决方案2】:

    您应该对WM_ENDSESSION 消息做出反应。

    当用户注销或计算机关闭时发送此消息。

    如果您还想对睡眠/休眠做出反应,则需要使用 PBT_APMSUSPEND 处理 WM_POWERBROADCAST

    但我不知道如何在 python 中做到这一点。我想这取决于您的窗口框架,因为您需要一个窗口/消息循环来接收消息。

    【讨论】:

    猜你喜欢
    • 2021-03-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-09
    • 1970-01-01
    • 1970-01-01
    • 2014-05-25
    相关资源
    最近更新 更多