我有与一些外部服务器通信的 VB.NET 应用程序(通过 Intranet 维护登录会话),我想监听睡眠/休眠事件,这样当它发生时,我想在计算机进入睡眠状态之前注销现有的会话系统,而我的应用程序将继续在后台运行,但不会做任何事情。
反之亦然,当计算机从休眠状态恢复或从睡眠状态唤醒时,我想立即登录服务器。
如何获取这些事件并执行我的代码?我相信这与我应该在 VB 中使用的 Win32 API 有关。
谢谢。
我有与一些外部服务器通信的 VB.NET 应用程序(通过 Intranet 维护登录会话),我想监听睡眠/休眠事件,这样当它发生时,我想在计算机进入睡眠状态之前注销现有的会话系统,而我的应用程序将继续在后台运行,但不会做任何事情。
反之亦然,当计算机从休眠状态恢复或从睡眠状态唤醒时,我想立即登录服务器。
如何获取这些事件并执行我的代码?我相信这与我应该在 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
否则,例如,如果您正在使用服务,则必须创建一个如此处所述的隐藏表单(向下滚动到“示例 2”)
试试下面:
重新启动电脑
System.Diagnostics.Process.Start("Shutdown", " -r -t 00")
关闭电脑
System.Diagnostics.Process.Start("Shutdown", " -s -t 00")