For Hibernating your computer use the following method:
VB.net code:
1) Check for Hibernate Support.
a) Declare the Function
Code:
Public Declare Function IsPwrHibernateAllowed Lib "Powrprof.dll" Alias "IsPwrHibernateAllowed" () As Integer
b) Check for support
Code:
Dim boolHibernateSupport as Boolean = CBool(IsPwrHibernateAllowed())
2) If boolHibernateSupport is True then
Code:
If Application.SetSuspendState(PowerState.Hibernate, True, False) = False Then
' Add ErrorHandling code here
End If
You may search the MSDN library for more information about the SetSuspendState Function.
The shutdown -s method mentioned above is simpler. The below mentioned method is more complicated but allows greater control. Also, it does not rely on the Shutdown command.
Alternatively you can use the following method to Shutdown/Restart the PC
1) Declare the function
Code:
Public Declare Function ExitWindowsEx Lib "user32.dll" Alias "ExitWindowEx" (ByVal uFlags As System.UInt32, ByVal dwReason As System.UInt32) As Boolean
2) Declare the Constants (flags) needed.
Code:
Public Enum ShutdownType
EWX_HYBRID_SHUTDOWN = &H400000
EWX_LOGOFF = &H0
EWX_POWEROFF = &H8
EWX_REBOOT = &H2
EWX_RESTARTAPPS = &H40
EWX_SHUTDOWN = &H1
EWX_FORCE = &H4
EWX_FORCEIFHUNG = &H10
End Enum
Public Enum ShutdownReason
SHTDN_REASON_MAJOR_APPLICATION = &H40000
SHTDN_REASON_MAJOR_HARDWARE = &H10000
SHTDN_REASON_MAJOR_LEGACY_API = &H70000
SHTDN_REASON_MAJOR_OPERATINGSYSTEM = &H20000
SHTDN_REASON_MAJOR_OTHER = &H0
SHTDN_REASON_MAJOR_POWER = &H60000
SHTDN_REASON_MAJOR_SOFTWARE = &H30000
SHTDN_REASON_MAJOR_SYSTEM = &H50000
SHTDN_REASON_MINOR_BLUESCREEN = &HF
SHTDN_REASON_MINOR_CORDUNPLUGGED = &HB
SHTDN_REASON_MINOR_DISK = &H7
SHTDN_REASON_MINOR_ENVIRONMENT = &HC
SHTDN_REASON_MINOR_HARDWARE_DRIVER = &HD
SHTDN_REASON_MINOR_HOTFIX = &H11
SHTDN_REASON_MINOR_HOTFIX_UNINSTALL = &H17
SHTDN_REASON_MINOR_HUNG = &H5
SHTDN_REASON_MINOR_INSTALLATION = &H2
SHTDN_REASON_MINOR_MAINTENANCE = &H1
SHTDN_REASON_MINOR_MMC = &H19
SHTDN_REASON_MINOR_NETWORK_CONNECTIVITY = &H14
SHTDN_REASON_MINOR_NETWORKCARD = &H9
SHTDN_REASON_MINOR_OTHER = &H0
SHTDN_REASON_MINOR_OTHERDRIVER = &HE
SHTDN_REASON_MINOR_POWER_SUPPLY = &HA
SHTDN_REASON_MINOR_PROCESSOR = &H8
SHTDN_REASON_MINOR_RECONFIG = &H4
SHTDN_REASON_MINOR_SECURITY = &H13
SHTDN_REASON_MINOR_SECURITYFIX = &H12
SHTDN_REASON_MINOR_SECURITYFIX_UNINSTALL = &H18
SHTDN_REASON_MINOR_SERVICEPACK = &H10
SHTDN_REASON_MINOR_TERMSRV = &H20
SHTDN_REASON_MINOR_UNSTABLE = &H6
SHTDN_REASON_MINOR_UPGRADE = &H3
SHTDN_REASON_MINOR_WMI = &H15
SHTDN_REASON_FLAG_USER_DEFINED = &H40000000
SHTDN_REASON_FLAG_PLANNED = &H80000000
End Enum
3) Run the command:
Code:
ExitWindowsEx(ShutdownType.EWX_POWEROFF And ShutdownType.EWX_SHUTDOWN, ShutdownReason.SHTDN_REASON_MAJOR_POWER And ShutdownReason.SHTDN_REASON_FLAG_PLANNED)
Of course, this code allows more control. You can also use the new Hybrid shutdown supported by Windows 8.
Bookmarks