none
Evitar PC entrar no modo de espera RRS feed

  • Pergunta

  • Olá galera!

    Estou criando um aplicativo e gostaria que o windows não entrasse no modo de espera enquanto esse aplicativo estiver rodando.

    Já pesquisei em vários locais (inclusive fóruns). Encontrei o código abaixo:

    AddHandler SystemEvents.SessionEnding, AddressOf DesligandoSistema
    
    Private Sub DesligandoSistema(ByVal sender As Object, ByVal e As Microsoft.Win32.SessionEndingEventArgs)
         e.Cancel = True
    end sub
    
    
    SystemEvents fica no namespace Microsoft.Win32
    


    Mas não obtive êxito. Alguém pode  me ajudar? 


    • Editado DaviNobre quinta-feira, 1 de outubro de 2015 15:06
    quinta-feira, 1 de outubro de 2015 00:49

Respostas

  • Tente assim:

      Private Const WM_QUERYENDSESSION As System.Int32 = &H11
      Private Const WM_CANCELMODE As System.Int32 = &H1F
    
      Protected Overrides Sub WndProc(ByRef ex As Message)
        If ex.Msg = WM_QUERYENDSESSION Then
          Dim MyMsg As New Message
          MyMsg.Msg = WM_CANCELMODE
          MyBase.WndProc(MyMsg)
          MessageBox.Show("Desligar Cancelado.")
        Else
          MyBase.WndProc(ex)
        End If
      End Sub


    Bruno Ferreira de Souza
    MVP - Microsoft Valuable Professional
    MCTS .NET Framework - Windows Applications
    MCPD .NET Framework - Windows Applications
    www.maestrodotnet.com.br
    @BrunoMaestro

    • Marcado como Resposta Marcos SJ sexta-feira, 2 de outubro de 2015 17:34
    sexta-feira, 2 de outubro de 2015 03:36
  • Obrigado Sr. Bruno, mas não entendi seu código..:'(

    Porém encontrei o código abaixo e deu certo:

    http://www.codeguru.com/columns/vb/preventing-your-monitor-from-going-to-sleep-with-visual-studio-2012.htm

    É uma boa solução?


    • Editado DaviNobre terça-feira, 6 de outubro de 2015 16:23 Correção
    • Marcado como Resposta Marcos SJ terça-feira, 6 de outubro de 2015 17:59
    terça-feira, 6 de outubro de 2015 16:23

Todas as Respostas

  • Tente assim:

      Private Const WM_QUERYENDSESSION As System.Int32 = &H11
      Private Const WM_CANCELMODE As System.Int32 = &H1F
    
      Protected Overrides Sub WndProc(ByRef ex As Message)
        If ex.Msg = WM_QUERYENDSESSION Then
          Dim MyMsg As New Message
          MyMsg.Msg = WM_CANCELMODE
          MyBase.WndProc(MyMsg)
          MessageBox.Show("Desligar Cancelado.")
        Else
          MyBase.WndProc(ex)
        End If
      End Sub


    Bruno Ferreira de Souza
    MVP - Microsoft Valuable Professional
    MCTS .NET Framework - Windows Applications
    MCPD .NET Framework - Windows Applications
    www.maestrodotnet.com.br
    @BrunoMaestro

    • Marcado como Resposta Marcos SJ sexta-feira, 2 de outubro de 2015 17:34
    sexta-feira, 2 de outubro de 2015 03:36
  • Olá DaviNobre,

    tudo bem?

    Caso tenha mais alguma dúvida em relação a solução apresentada, por gentileza especifique um pouco mais sobre os detalhes que o Bruno Maestro solicitou em sua resposta.

    Atenciosamente


    Marcos Roberto de Souza Junior

    Esse conteúdo e fornecido sem garantias de qualquer tipo, seja expressa ou implícita

    MSDN Community Support

    Por favor, lembre-se de Marcar como Resposta as respostas que resolveram o seu problema. Essa e uma maneira comum de reconhecer aqueles que o ajudaram e fazer com que seja mais fácil para os outros visitantes encontrarem a resolução mais tarde.

    sexta-feira, 2 de outubro de 2015 17:34
  • Obrigado Sr. Bruno, mas não entendi seu código..:'(

    Porém encontrei o código abaixo e deu certo:

    http://www.codeguru.com/columns/vb/preventing-your-monitor-from-going-to-sleep-with-visual-studio-2012.htm

    É uma boa solução?


    • Editado DaviNobre terça-feira, 6 de outubro de 2015 16:23 Correção
    • Marcado como Resposta Marcos SJ terça-feira, 6 de outubro de 2015 17:59
    terça-feira, 6 de outubro de 2015 16:23