@ -35,7 +35,6 @@
# ifdef Q_OS_WIN
# ifdef Q_OS_WIN
# include <windows.h>
# include <windows.h>
# include <powrprof.h>
# include <Shlobj.h>
# include <Shlobj.h>
# else
# else
# include <sys/types.h>
# include <sys/types.h>
@ -113,12 +112,20 @@ void Utils::Misc::shutdownComputer(const ShutdownDialogAction &action)
if ( GetLastError ( ) ! = ERROR_SUCCESS )
if ( GetLastError ( ) ! = ERROR_SUCCESS )
return ;
return ;
if ( action = = ShutdownDialogAction : : Suspend )
using PSETSUSPENDSTATE = BOOLEAN ( WINAPI * ) ( BOOLEAN , BOOLEAN , BOOLEAN ) ;
SetSuspendState ( false , false , false ) ;
const auto setSuspendState = Utils : : Misc : : loadWinAPI < PSETSUSPENDSTATE > ( " PowrProf.dll " , " SetSuspendState " ) ;
else if ( action = = ShutdownDialogAction : : Hibernate )
SetSuspendState ( true , false , false ) ;
if ( action = = ShutdownDialogAction : : Suspend ) {
else
if ( setSuspendState )
setSuspendState ( false , false , false ) ;
}
else if ( action = = ShutdownDialogAction : : Hibernate ) {
if ( setSuspendState )
setSuspendState ( true , false , false ) ;
}
else {
InitiateSystemShutdownA ( 0 , QCoreApplication : : translate ( " misc " , " qBittorrent will shutdown the computer now because all downloads are complete. " ) . toLocal8Bit ( ) . data ( ) , 10 , true , false ) ;
InitiateSystemShutdownA ( 0 , QCoreApplication : : translate ( " misc " , " qBittorrent will shutdown the computer now because all downloads are complete. " ) . toLocal8Bit ( ) . data ( ) , 10 , true , false ) ;
}
// Disable shutdown privilege.
// Disable shutdown privilege.
tkp . Privileges [ 0 ] . Attributes = 0 ;
tkp . Privileges [ 0 ] . Attributes = 0 ;