コンピューターをスリープ状態にするために使用するコマンドは何ですか(休止状態ではありません)?


63

コマンドラインを使用してWindows PC(Windows 7)をスリープ状態にしたい(したがって、キーボードのマクロボタンにバインドできます)。

PCの電源ボタンはセットアップされていますが、コンピューターはスリープ状態になっています(ただし、床に下がっており、手を伸ばすのが面倒です)まさに望みどおりです(電源が切れた場合にハイブリッドモードを使用してスリープします)

シャットダウンメニューのスリープコマンドも機能します。

私が見つけたほとんどの情報は使用するように言っています。

%windir%\system32\rundll32.exe PowrProf.dll, SetSuspendState 0,1,0

ただし、これによりコンピューターは休止状態モードになります。休止状態は無効にしていますが、ハイブリッドスリープを使用しています。

では、コンピューターをスリープ状態にする(休止状態にしない)ために使用するコマンドは何ですか?


5
rundll32.exe PowrProf.dll,SetSuspendState推奨されません。危険です。(スタックが破損するため、要求される関数シグネチャに準拠していないため、レイモンドチェンが警告するように、予期しない悪い事態が発生する可能性があります)Rundll32
アーロントーマ

回答:


13

私は解決策を見つけました。AutoHotKeyというフリーウェアプログラムをインストールし、[スタート]メニュー-> [スリープ]を呼び出す手順をスクリプトファイルに記録しました。次に、スクリプトファイルをスタンドアロンの実行可能ファイルSleepWin7.exeにコンパイルしました。

次に、SleepWin7.exeを実行して、コンピューターをハイブリッドスリープ状態にします。

AutoHotKeyが必要な場合は、これをアンインストールできます。


更新:ユーザーがログインしていない場合、つまりWindows 7のログイン画面では、上記のソリューションは機能しません。(私のコンピューターは毎週日曜日の午前4時に起動し、ユーザーのログインなしで行われる毎週のバックアップを実行します。)そのような場合でも、Wizmoプログラムは引き続き機能します。

wizmo.exeクワイエットスタンバイ!


3
AutoHotKeyスクリプト(キーボードを使用)は次のとおりです。送信、{LWINDOWN} {LWINUP} WinWait、スタートメニュー、IfWinNotActive、スタートメニュー、、 WinActivate、スタートメニュー、WinWaitActive、スタートメニュー、送信、{TAB} {UP} {RIGHT}
Eric L

これは私が最終的に使用したソリューションです。ハイブリッドスリープをサポートするため。
エリックL

+1これは汚れたように感じますが、動作します。最後の送信部分を「{RIGHT} {RIGHT} sに送信」に変更する必要がありました。ところで私はほとんどそれが許さ:)だろうとして、AHKをアンインストールするために推奨するため、あなたに-1を与えた
demoncodemonkey

また、スクリプトの先頭にこれを追加して、コマンドがデスクトップウィンドウに移動し、失われないようにします。WinActivate、ahk_class Progman
demoncodemonkey

1
Windows 8に切り替えた後、NirCmd(非常に軽量)を使用しているため、コンピューターがハイブリッドスリープ状態になります。nircmd.exe standby詳細はこちらをご覧ください-> nirsoft.net/utils/nircmd.html
Eric L

73

これらが役立つことを願っています。

シャットダウン %windir%\System32\shutdown.exe -s

リブート %windir%\System32\shutdown.exe -r

ログオフ %windir%\System32\shutdown.exe -l

待機する %windir%\System32\rundll32.exe powrprof.dll,SetSuspendState Standby

休止状態 %windir%\System32\rundll32.exe powrprof.dll,SetSuspendState Hibernate

注意:runprof32.exeを使用してpowerprof.dllを起動しないでください。代わりに、SetSuspendStateを直接呼び出す必要があります。これは、Powershellを使用して実行できます。たとえば、sleep.ps1などのファイルを作成し、以下の内容を含めます。

Add-Type -Assembly System.Windows.Forms
[System.Windows.Forms.Application]::SetSuspendState("Suspend", $false, $true)

次に、を使用して実行しpowershell -File C:\your-path\sleep.ps1ます。最初にコマンドを実行しSet-ExecutionPolicy RemoteSignedて、PowerShellスクリプトを実行できるようにする必要があります。

上記のスクリプトはシステムのサスペンドを引き起こし、現在の休止状態の設定に応じてスリープまたは休止状態になります。コマンドラインからその設定を変更するには、管理者としてコマンドラインからpowercfg -h off(またはon)を実行します。


4
いいね!+1 ...
studiohack

9
これは素晴らしいですが、Sleeeeeeeeeeeeepに1つだ
demoncodemonkey

7
スタンバイショートカットにより、Win7マシンが休止状態になります:(
ユーザー

5
@demoncodemonkey:Standbyyyyyyyyyyyyy = Sleeeeeeeeeeeeep :)
Panda

11
明らかにそうではありません:superuser.com/a/331545/21887したがって、この方法を使用することは危険であると見なされており、推奨されません。(スタックを破損します。)
アーロントーマ

16

Wizmoの無料ユーティリティをご覧ください。これは非常に多くのことを実行できます。
あなたが探しているコマンドはおそらく:

ウィズモスタンバイ


Wizmoはかなりクールに見えます!私はマックのファンボーイではなかったことを望みます
-trolle3000

ユーティリティをインストールする必要はありません。素敵なシンプルなツール。
アルトゥールカルヴァ

2
wizmo.exe quiet standbyは間違いなく迷惑なビープ音を抑制しwizmo.exeます。
アーロントーマ

14

「sleep.ps1」のような拡張子.ps1(powershell)のファイルを作成して、これを書くことができます。

Add-Type -Assembly System.Windows.Forms
[System.Windows.Forms.Application]::SetSuspendState("Suspend", $false, $true)

何かを実行していて、PCを離れなければならず、オフにしたくないときに使用します。そこで、スクリプトを次のように変更します。

$minutes = read-host "Enter minutes to wait until sleep";
$secs= 60*$minutes;
Start-sleep -s $secs

Add-Type -Assembly System.Windows.Forms
[System.Windows.Forms.Application]::SetSuspendState("Suspend", $false, $true)

そして今、私はそれを実行するとき、私はちょうど寝るまで待ちたい分を入力します。

これをcmd行から実行するには、次のように記述します。

powershell -File C:\your-path\sleep.ps1

PowerShellスクリプトを実行したことがない場合は、最初に実行することをお勧めします

Set-ExecutionPolicy RemoteSigned

PowerShellでスクリプトの実行を有効にします。これは一度だけ実行する必要があります。


変数の名前は逆向きではありませんか?
-Ullallulloo


7

私はこのSLEEP.EXEユーティリティを何年も使用しています。それはうまく機能し、サスペンドモード(デフォルトの「スリープ」形式)にどの引数を与えるかを覚える必要はありません。


SLEEP.EXEは、Windows 7 Pro SP1で動作します。親ページには、他の多くの便利なWindows用コマンドラインツールもリストされています。ありがとう、@ jjlin!
コードリード

6

使用する必要がある休止モードを無効にするには

powercfg -h off

今、rundll32 powrprof.dll、SetSuspendStateは、ステーションをスタンビーモードにします

[編集]

ラップトップ(モバイルステーションでは利用できない状態)を持っているため、実際にはハイブリッドスリープを設定できません。ハイブリッドスリープでは、休止状態を有効にする必要がありますコントロールパネル\電源管理設定のモード。rundll32 powrprof.dll、SetSuspendStateハイブリッドスリープがいくつかの結果を与える場合は試してください。


これは、ハイブリッドスリープを無効にし、それはちょっと目的を敗北
エリック・L

rundll32 powrprof.dll、SetSuspendStateハイブリッドスリープは、コンピューターを休止状態にします。アイデアをありがとう。
エリックL

rundll32はSetSuspendStateを呼び出すために設計されていないため、間違ったパラメーター値を取得します。意図的に無効にしないと、常に休止状態を引き起こします。
SergeyT

5

batファイルを作成します。600は秒単位の遅延です。

ping -n 600 -w 1 127.0.0.1> nul

powercfg -hオフ

%windir%\ System32 \ rundll32.exe powrprof.dll、SetSuspendState Standby


コンピューターをスリープ状態にする優れた方法であり、スリープ状態を解除したい他の人を送信するのは非常に簡単です。
モーリシー

創造的な答え!
ジェーンパンダ

rundll32.exeを使用してSetSuspendStateを呼び出さないでください。そのためには設計されていません。ここの
-SergeyT

4

.NETプログラムをコンパイルする能力がある場合は、次のコマンドでこれを行います

System.Windows.Forms.Application.SetSuspendState(PowerState.Suspend, 
                                                 false,   /* force */
                                                 true     /* disableWake */);

注:rundll32 powrprof.dll,SetSuspendStateコマンドで必要な休止状態を無効にする必要はありません。PowerState.Hibernate必要に応じてマシンを休止状態にすることもできます。

Visual Studioのどのバージョンでも、このコマンドを使用してEXEを簡単にコンパイルできます。コンソールアプリケーションを作成し、System.Windows.FormsDLL への参照を追加するだけです。


1
上記で引用したWizmoは基本的に既にこれを行っています-それを使用することは同等のようです。そして、それはSteve Gibsonによって書かれており、無料なので、おそらく私が同じものを手でコーディングするよりも良いでしょう!
-stevemidgley

+1。このようなものをここで探していますsuperuser.com/q/310045/84229
ユーザー

Visual Studioコンパイルに使用する必要さえありません。代わりに、コマンドラインコンパイラcsc.exeを使用できます。Windowsのすべての最新バージョンに既にインストールされています。
SergeyT
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.