我有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")