जैसा कि ऊपर का सुझाव दिया, आप जाल घटनाओं के लिए WMI का उपयोग कर सकते हैं।
मैं कुछ कोड नमूना मैं कुछ साल पहले लिखा था जोड़ रहा (आशा है कि यह अभी भी काम करेगा, क्योंकि यह .Net3.5 साथ VS2010 पर लिखा गया था)
यहां कक्षा कि सभी घटनाओं बटोरता है
Imports Microsoft.Win32
Imports System.Windows.Forms
Public Class PowerMessageFilter
Implements IMessageFilter
Const WM_POWERBROADCAST As Integer = &H218
Const PBT_APMSUSPEND As Integer = &H4
Const PBT_APMSTANDBY As Integer = &H5
Const PBT_APMRESUMESUSPEND As Integer = &H7
Const PBT_APMRESUMESTANDBY As Integer = &H8
Protected Sub reportpowerchange(ByVal reason As Integer)
Dim report As String = String.Empty
Select Case (reason)
Case PBT_APMSUSPEND
report = "system is suspending operation "
suspend_service()
Exit Select
Case PBT_APMSTANDBY
report = "system is standing by "
suspend_service()
Exit Select
Case PBT_APMRESUMESUSPEND
report = "operation resuming after suspension."
suspend_service()
Exit Select
Case PBT_APMRESUMESTANDBY
report = "operation resuming after stand by."
suspend_service()
Exit Select
End Select
End Sub
Public Function PreFilterMessage(ByRef m As Message) As Boolean Implements IMessageFilter.PreFilterMessage
If WM_POWERBROADCAST = m.Msg Then
Console.Out.WriteLine("Power Broadcast recieved.")
Dim reason As Integer = m.WParam.ToInt32()
reportpowerchange(reason)
End If
Return False
End Function
Private Sub suspend_service()
' Your suspend code
End Sub
End Class
अब, श्रोता के लिए, मैं एक Win32 सेवा है कि पृष्ठभूमि में भाग गया था और सुनने के काम
Dim Filter As New PowerMessageFilter 'The Standby/Hibernation Filter catch;
Application.AddMessageFilter(Filter)
मुझे खेद है कि मैं साइटों मैं से उदाहरण लिया है के लिए कोई संदर्भ नहीं है किया था, मुझे लगता है कि यह शायद एमएस से था उपरोक्त डीएन लिंक।
आशा है कि यह मदद कर सकते हैं,
Liron
इसमें से अधिकांश SystemEvents वर्ग से आच्छादित है। –