【问题标题】:Detect shutdown event with python用python检测关机事件
【发布时间】:2020-11-01 11:43:33
【问题描述】:

我有一个 Minecraft 基岩版服务器在我们共享的 PC 上运行。我想通过python与之交互。但是,我遇到的一个问题是我的兄弟有时会重新启动我们的电脑或 Windows 更新。我需要知道如何检测该关闭事件并在重新启动之前将关闭命令发送到服务器。我正在使用子进程库。

【问题讨论】:

    标签: python windows subprocess shutdown


    【解决方案1】:

    所以,您需要的是 win32API 和 here 描述的函数。您可以使用此函数添加所谓的控制处理程序方法,该方法将在程序因任何原因(包括关机)关闭或终止时运行。您可以找到可以传递给处理程序的不同代码的列表及其含义here。理想情况下,您应该有一个处理程序方法,它只是关闭服务器,等待它完成关闭,然后返回。

    我对图书馆没有任何个人经验,但应该相当简单。

    编辑:正如@ErykSun 所述,您需要创建一个隐藏窗口才能接收事件。老实说,我不确定如何创建那个隐藏的窗口。一些文档建议将您的应用程序作为服务运行也可能有效。如果有时间,我会进一步研究。

    【讨论】:

    • python.exe 加载 user32.dll。因此,即使只是一个控制台应用程序,系统也将其视为一个 GUI 应用程序,并且不会为注销和关闭事件发送控制事件。正如remarks 中的最后两段为SetConsoleCtrlHandler 所建议的那样,脚本必须创建一个隐藏窗口并处理WM_QUERYENDSESSIONWM_ENDSESSION
    • @ErykSun 谢谢,你是绝对正确的。我会将其添加到我的答案中。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-01-09
    相关资源
    最近更新 更多