2012-07-19 16 views
7

私は、いくつかの外部サーバーと通信する(イントラネット経由でログインセッションを維持する)VB.NETアプリケーションを持っています。そして、スリープ/私のアプリはバックグラウンドで実行されたままですが、何もしませんが、コンピュータがスリープ状態になる前に既存のセッションシステムをログアウトします。Visual Basic.NETでスリープ状態/休止状態/起床イベントを取得する

逆に、コンピュータが休止状態から復帰したときやスリープから復帰したときに、すぐにサーバにログインしたい。

これらのイベントを取得してコードを実行するにはどうすればよいですか?これは私がVBで使用するはずのWin32 APIに関係していると思います。

ありがとうございました。

答えて

6

アプリケーションがウィンドウを使用していると、あなたは、単によう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')

0

のように下にしてみてください:

は、PCを再起動するには

System.Diagnostics.Process.Start("Shutdown", " -r -t 00") 

PCをシャットダウンするには

System.Diagnostics.Process.Start("Shutdown", " -s -t 00")