6

バックグラウンド

私は現在Pythonを学んでいるところですが、コンピューターをシャットダウン、再起動、およびログオフできる一種の「コントロールセンター」を用意することは非常にクールなプロジェクトになると思いました。インポートOSモジュールが古くなっていると聞いたので、サブプロセスモジュールも使用したいと思います。

現在のコード

def shutdown(self):
    import subprocess
    subprocess.call(["shutdown", "-f", "-s", "-t", "60"])

質問

私が本当に求めているのは、(サブプロセスモジュールを使用して)コンピューターからログオフして再起動する方法はありますか?

技術仕様

Python 2.7.3

Windows 7、32ビット

4

3 に答える 3

10

まず、次のことを行う必要があります。

import subprocess

Windows PCをシャットダウンするには:

subprocess.call(["shutdown", "/s"])

WindowsPCを再起動するには

subprocess.call(["shutdown", "/r"])

Windows PCからログアウトするには:

subprocess.call(["shutdown", "/l "])

900秒後にWindowsPCをシャットダウンするには:

subprocess.call(["shutdown", "/s", "/t", "900"])

Pythonスクリプトを使用してPCをシャットダウンする正当な理由がないためにシャットダウンを中止するには、stackoverflowからコードをコピーして貼り付けただけです。

subprocess.call(["shutdown", "/a "])

これらの関数呼び出しはPython3.5でのみ試しました。まず第一に、これはpython 2.7から変わっていないと思います。第二に、2016年なので、この質問をしてからすでに切り替えを行っていると思います。

于 2016-10-11T13:03:50.130 に答える
8

再起動します:

shutdown /r

ログオフするには:

shutdown /l

最終的なコードブロック(要求に応じて):

ログオフ:

def shutdown(self):
    import subprocess
    subprocess.call(["shutdown", "-f", "-s", "-t", "60"])

再起動:

def shutdown(self):
    import subprocess
    subprocess.call(["shutdown", "-f", "-r", "-t", "60"])
于 2013-02-08T01:25:34.193 に答える
2

どういうわけか仕事に取り掛かることができない場合はshutdown、いつでもUSERライブラリから呼び出す関数を呼び出すことができます。またはを介してこれを行うことができますが、これを行うこともできます。ctypeswin32api

subprocess.call(['rundll32', 'user.exe,ExitWindowsExec')

または、スタートメニューが使用する高レベルのシェル関数を呼び出すこともできます。

subprocess.call(['rundll32', 'shell32.dll,SHExitWindowsEx 2')

(これらの関数については、MSDNのドキュメントを参照してください。)

これはおそらくそれを行うための最悪の方法だと思います。コマンドを実行する場合は、shutdown;を実行します。APIを使用する場合は、を使用しますwin32api。しかし、あなたが奇妙に台無しにされたシステムを持ってshutdown /rいて、それがうまくいかない場合、それはオプションです。

于 2013-02-08T01:34:52.153 に答える