我有VB.NET应用程序与某些外部服务器通信(通过Intranet维护登录会话),并且我想要侦听Sleep/Hibernate事件,以便在它发生了,我想在计算机进入睡眠状态之前注销一个现有的会话系统,而我的应用程序将继续在后台运行,但不会执行任何操作。在Visual Basic.NET中获取睡眠/休眠和恢复/唤醒事件
反之亦然,当计算机从休眠状态恢复或从睡眠状态唤醒时,我想立即登录到服务器。
如何获取这些事件并执行我的代码?我相信这涉及到我应该在VB中使用的Win32 API。
谢谢。
我有VB.NET应用程序与某些外部服务器通信(通过Intranet维护登录会话),并且我想要侦听Sleep/Hibernate事件,以便在它发生了,我想在计算机进入睡眠状态之前注销一个现有的会话系统,而我的应用程序将继续在后台运行,但不会执行任何操作。在Visual Basic.NET中获取睡眠/休眠和恢复/唤醒事件
反之亦然,当计算机从休眠状态恢复或从睡眠状态唤醒时,我想立即登录到服务器。
如何获取这些事件并执行我的代码?我相信这涉及到我应该在VB中使用的Win32 API。
谢谢。
如果您的应用程序使用一个窗口,可以读取消息循环,你可以简单地订阅Microsoft.Win32.SystemEvents.PowerModeChanged,如:
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
否则,如果您使用的例如一个服务,你必须创建一个隐藏的表单像描述here (scroll down to 'Example 2')
尝试如下:
重新启动电脑
System.Diagnostics.Process.Start("Shutdown", " -r -t 00")
关闭电脑
System.Diagnostics.Process.Start("Shutdown", " -s -t 00")