Ausgeschlafen - Nachtrag
Dank an Torsten Rendelmann für seinen Hinweis auf die SystemEvents im Microsoft.Win32 Namespace. Ich hab sie gleich mal ausprobiert und meine WndProc-Lösung ersetzt. (Dass es jetzt allerdings besser funktionieren soll, kann ich nicht feststellen.) Meine Anwendung sieht jetzt so aus:
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
AddHandler Microsoft.Win32.SystemEvents.PowerModeChanged, AddressOf OnPowerModeChanged
End Sub
Private Sub OnPowerModeChanged(sender as Object, e as Microsoft.Win32.PowerModeChangedEventArgs)
if e.Mode = Microsoft.Win32.PowerModes.Resume then
Timer1.Enabled = False
Timer1.Enabled = True
End If
End Sub
Der Code ist kürzer geworden, er enthält keinen Rückfall mehr in die Win32-API-Zeit und die SystemEvents lassen sich sogar ohne ein Window verarbeiten.
Fazit: Die Klassenbibliothek des .NET Framework bietet immer wieder noch unexplorierte Bereiche :-)