Получить события сна / гибернации и возобновления / пробуждения в визуальном режиме Basic.NET


У меня есть VB.NET приложение, которое взаимодействует с каким-то внешним сервером (поддерживает сеансы входа через интрасеть), и я хочу прослушивать события сна/гибернации, так что когда это произойдет, я хочу выйти из существующей системы сеансов до того, как компьютер перейдет в спящий режим, в то время как мое приложение будет работать в фоновом режиме, но ничего не будет делать.

И наоборот, когда компьютер возвращается из спящего режима или просыпается от сна, я хочу немедленно войти на сервер.

Как я могу схватить эти события и выполнить мой код? Я считаю, что это относится к Win32 API, который я должен использовать в VB.

Спасибо.

2 7

2 ответа:

Если ваше приложение использует окно и может читать цикл сообщений, вы можете просто подписаться на Microsoft.Win32.Системные события.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

В противном случае, если вы используете сервис, например, вы должны создать скрытую форму, как описано здесь (прокрутите вниз до 'Example 2')

Попробуйте ниже:

Перезагрузить компьютер

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

Чтобы выключить компьютер

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