I have VB.NET app that communicates with some external server (maintains login sessions via Intranet), and I want to listen for Sleep/Hibernate events such that when it happens, I want to logout an existing session system before computer goes to sleep, while my app will remain running in the background but won't do anything.
And vice versa, when computer is resumed from Hibernate or Woke up from sleep, I want to immediately login to the server.
How can I grab those events and execute my code? I believe this relates to Win32 API which I'm supposed to use in VB.
Thanks.
If your application is using a window and can read the message loop you can simply subscribe to Microsoft.Win32.SystemEvents.PowerModeChanged like:
AddHandler Microsoft.Win32.SystemEvents.PowerModeChanged, AddressOf SystemEvents_PowerModeChanged
Private Sub SystemEvents_PowerModeChanged(ByVal sender As Object, ByVal e As PowerModeChangedEventArgs)
Select Case e.Mode
Case PowerModes.Resume
Case PowerModes.StatusChange
Case PowerModes.Suspend
End Select
End Sub
Else, if you are using a service for example, you have to create a hidden form like described here (scroll down to 'Example 2')
try below:
To restart the pc
System.Diagnostics.Process.Start("Shutdown", " -r -t 00")
To shutdown the pc
System.Diagnostics.Process.Start("Shutdown", " -s -t 00")
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With