Voglio mettere il mio PC Windows (Windows 7) in uno stato di sospensione tramite riga di comando (quindi posso associare il pulsante macro alla tastiera).
Il pulsante di accensione sul PC è configurato ma il computer è inattivo (ma è sul pavimento e io sono troppo pigro per arrivare giù) esattamente come lo voglio (dorme usando la modalità ibrida in caso di perdita di energia)
Funziona anche il comando di sospensione nel menu di spegnimento.
la maggior parte delle informazioni che ho trovato dice di usare;
%windir%\system32\rundll32.exe PowrProf.dll, SetSuspendState 0,1,0
Ma questo mette il computer in modalità ibernazione. Ho disabilitato l'ibernazione ma uso il sonno ibrido.
Quindi, qual è il comando da utilizzare per mettere il computer in modalità di sospensione (non ibernato)?
Ho trovato una soluzione. Ho installato un programma freeware chiamato AutoHotKey e registrato i passaggi per richiamare il menu Start -> Sleep in un file di script. Quindi ho eseguito il file di script in un file eseguibile stand-alone SleepWin7.exe.
Ora eseguo semplicemente SleepWin7.exe per mettere il mio computer in modalità di sospensione ibrida.
È possibile disinstallare AutoHotKey se questo è tutto ciò che serve per.
Aggiornamento: la soluzione di cui sopra non funziona quando l'utente non ha effettuato l'accesso, ad esempio la schermata di accesso di Windows 7. (Il mio computer si sveglia alle 4:00 ogni domenica per eseguire il backup settimanale, che viene eseguito senza il login dell'utente.) In tal caso, il Wizmo programma funziona ancora:
wizmo.exe quiet standby!
Spero che tu li trovi utili.
Arresto %windir%\System32\shutdown.exe -s
Riavvia %windir%\System32\shutdown.exe -r
Disconnetti %windir%\System32\shutdown.exe -l
Standby %windir%\System32\rundll32.exe powrprof.dll,SetSuspendState Standby
Hibernate %windir%\System32\rundll32.exe powrprof.dll,SetSuspendState Hibernate
Attenzione: rundll32.exe non dovrebbe essere usato per avviare powerprof.dll . Invece dovresti chiamare direttamente SetSuspendState. Questo può essere fatto usando Powershell - crea un file, ad esempio sleep.ps1, con i seguenti contenuti.
Add-Type -Assembly System.Windows.Forms
[System.Windows.Forms.Application]::SetSuspendState("Suspend", $false, $true)
Quindi eseguirlo utilizzando powershell -File C:\your-path\sleep.ps1
. Potrebbe essere necessario prima eseguire il comando Set-ExecutionPolicy RemoteSigned
per abilitare l'esecuzione degli script di PowerShell.
Lo script precedente provoca una sospensione del sistema, che può essere interrotta o ibernata a seconda dell'impostazione di ibernazione corrente. Per modificare tale impostazione dalla riga di comando, eseguire powercfg -h off
(o on
) dalla riga di comando come amministratore.
Vedi l'utilità gratuita di Wizmo , che può fare moltissime cose.
Il comando che stai cercando è probabilmente:
wizmo standby
Puoi creare un file con estensione .ps1 (powershell) come "sleep.ps1" e scrivi questo:
Add-Type -Assembly System.Windows.Forms
[System.Windows.Forms.Application]::SetSuspendState("Suspend", $false, $true)
Lo uso quando ho qualcosa in esecuzione e devo lasciare il pc e non voglio spegnerlo. Quindi cambio lo script in modo che assomigli a questo:
$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)
E ora quando lo eseguo, inserisco solo i minuti in cui voglio aspettare fino a quando non dormo.
Puoi eseguirlo dalla riga cmd scrivendo
powershell -File C:\your-path\sleep.ps1
Se non hai mai eseguito uno script PowerShell prima, ti consigliamo di eseguirlo prima
Set-ExecutionPolicy RemoteSigned
in PowerShell per abilitare lo script in esecuzione. Questo deve essere eseguito solo una volta.
Con Sysinternals PsTools [ download ]:
psshutdown -d
utilizzando lo strumento riga di comando PsShutdown .
(Potresti preferire questa soluzione se hai già scaricato PsTools, è piuttosto diffuso. A parte questo, questo approccio è equivalente all'uso di wizmo
quiet standby
.)
Sto usando questo SLEEP.EXE utility per anni. Funziona bene e non è necessario ricordare quali argomenti devono essere assegnati alla modalità di sospensione (la sua forma predefinita di "sospensione").
per disabilitare la modalità di ibernazione che è necessario utilizzare
powercfg -h off
ora, rundll32 powrprof.dll, SetSuspendState metterà la stazione in modalità stanby
[MODIFICARE]
in realtà non riesco a configurare un sonno ibrido perché ho un laptop (uno stato che non è disponibile sulle stazioni mobili), per il sonno ibrido è necessario attivare la modalità di sospensione e alcuni dicono che rundll32 powrprof.dll, SetSuspendState attiva il sonno predefinito modalità nel pannello di controllo\impostazioni di gestione dell'alimentazione. per favore prova se rundll32 powrprof.dll, SetSuspendState hybrid sleep dai alcuni risultati.
Crea un file bat, dove 600 è un ritardo in secondi.
ping -n 600 -w 1 127.0.0.1> nul
powercfg -h off
% windir%\System32\rundll32.exe powrprof.dll, SetSuspendState Standby
Se sei competente nella compilazione di un programma .NET, il seguente comando lo farà
System.Windows.Forms.Application.SetSuspendState(PowerState.Suspend,
false, /* force */
true /* disableWake */);
Nota: Non è necessario disabilitare la modalità di sospensione come richiesto dal comando rundll32 powrprof.dll,SetSuspendState
. Puoi anche usare PowerState.Hibernate
che andrà in ibernazione se vuoi.
È possibile compilare facilmente un EXE con questo comando con qualsiasi versione di Visual Studio . Basta creare un'applicazione console e aggiungere un riferimento alla DLL System.Windows.Forms
.