none
Fechar aplicação após tempo inativo RRS feed

  • Pergunta

  • Boa tarde,

    Como faço para após um tempo inativo ele finalizar a aplicação? Vi alguns exemplos onde usa um timer e conforme tem o movimento do mouse no form reinicia o timer. Mas tenho vários forms eu teria que inserir o código em cada um deles. 

    Teria alguma outra forma?

    Obrigado.

    sexta-feira, 29 de julho de 2016 17:24

Respostas

  • Boa tarde amigo, bom pode ser feita desta forma.

    Codigo

    Public Class Form1
    
        'coded by pjoao
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            Me.Timer1.Enabled = True 'da start na timer
            Me.Timer1.Start()
            Me.Timer1.Interval = 10000 'tempo de 10 segundos
            xx = MousePosition.X
        End Sub
    
        Public xx As Integer = 0 'pegar movimento
        Public Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
            If (xx = MousePosition.X) Then 'verificar se o mouse esta no mesmo lugar ou ele se movimento.
                End 'caso esteja no mesmo lugar finalizar aplicativo
            Else
                xx = MousePosition.X 'pegar movimento
                Me.Label1.Text = (MousePosition.X)
            End If
        End Sub
    
        Private Sub Form1_MouseLeave(sender As Object, e As EventArgs) Handles Me.MouseLeave
            xx = MousePosition.X 'pegar movimento
            Me.Timer1.Enabled = True 'timer fora da form da start
        End Sub
    
        Private Sub Form1_MouseMove(sender As Object, e As MouseEventArgs) Handles Me.MouseMove
            If (e.Clicks = 0) Then 'timer dentro da forme da stop
                Me.Timer1.Enabled = False
            End If
        End Sub
    End Class


    • Editado João Paulo [] sexta-feira, 29 de julho de 2016 18:40 Erro no codigo
    • Marcado como Resposta Eduardo Milani sábado, 30 de julho de 2016 14:34
    sexta-feira, 29 de julho de 2016 18:40
  • Dei o caminho mas concordo com o Andre, e deselegante derrubar o sistema, mas acionar a proteção do Windows acho que também não é o caminho, em muitos ambientes os usuários se autenticam com uma mesma conta, 

    o que você pode fazer é registrar o tempo em cada operação e sempre que uma nova operação for solicitada você verifica o tempo, se superior desvie para sua tela de login

    Se a resposta contribuiu com seu aprendizado por favor marque como Útil
    Se solucionou seu problema por favor marque como Resposta
    Atenção, se seu problema foi resolvido não deixe o post aberto 

    Visite : www.codigoexpresso.com.br 

    • Marcado como Resposta Eduardo Milani sábado, 30 de julho de 2016 14:34
    sexta-feira, 29 de julho de 2016 22:28

Todas as Respostas

  • Minha praia não é o VB, mas pela logica, você tem um form principal o que chama os outros,

    coloque seu timer e trate o código ali

    Se a resposta contribuiu com seu aprendizado por favor marque como Útil
    Se solucionou seu problema por favor marque como Resposta
    Atenção, se seu problema foi resolvido não deixe o post aberto 

    Visite : www.codigoexpresso.com.br 

    sexta-feira, 29 de julho de 2016 17:29
  • Olá,

    Com o timer até teria como fazer, mas é uma solução que eu não acho muito elegante.

    Qual o problema que você quer resolver ao fechar a aplicação por inatividade?

    Talvez tenha outra maneira, preciso conhecer o problema para orientar.


    sexta-feira, 29 de julho de 2016 17:29
  • É uma aplicação com dados protegidos com senha. E como aqui no ambiente há varias pessoas. Gostaria que após de um tempo sem atividade na aplicação ele fechasse ou iria para uma tela de bloqueio.

    Através de um form principal não resolveria 100% do problema pois ocorre com muita frequência de ficar em apenas um form de consulta. Sem a abertura de outros formulários.
    sexta-feira, 29 de julho de 2016 17:36
  • Isso precisa ser feito via o software?

    Eu recomendaria utilizar uma diretiva de grupo do próprio windows que definisse um timeout para os computadores bloquearem por inatividade.

    Outra opção é adaptar algo com timer na aplicação mesmo, mas não recomendo.


    sexta-feira, 29 de julho de 2016 18:15
  • Boa tarde amigo, bom pode ser feita desta forma.

    Codigo

    Public Class Form1
    
        'coded by pjoao
        Private Sub Form1_Load(sender As Object, e As EventArgs) Handles MyBase.Load
            Me.Timer1.Enabled = True 'da start na timer
            Me.Timer1.Start()
            Me.Timer1.Interval = 10000 'tempo de 10 segundos
            xx = MousePosition.X
        End Sub
    
        Public xx As Integer = 0 'pegar movimento
        Public Sub Timer1_Tick(sender As Object, e As EventArgs) Handles Timer1.Tick
            If (xx = MousePosition.X) Then 'verificar se o mouse esta no mesmo lugar ou ele se movimento.
                End 'caso esteja no mesmo lugar finalizar aplicativo
            Else
                xx = MousePosition.X 'pegar movimento
                Me.Label1.Text = (MousePosition.X)
            End If
        End Sub
    
        Private Sub Form1_MouseLeave(sender As Object, e As EventArgs) Handles Me.MouseLeave
            xx = MousePosition.X 'pegar movimento
            Me.Timer1.Enabled = True 'timer fora da form da start
        End Sub
    
        Private Sub Form1_MouseMove(sender As Object, e As MouseEventArgs) Handles Me.MouseMove
            If (e.Clicks = 0) Then 'timer dentro da forme da stop
                Me.Timer1.Enabled = False
            End If
        End Sub
    End Class


    • Editado João Paulo [] sexta-feira, 29 de julho de 2016 18:40 Erro no codigo
    • Marcado como Resposta Eduardo Milani sábado, 30 de julho de 2016 14:34
    sexta-feira, 29 de julho de 2016 18:40
  • Dei o caminho mas concordo com o Andre, e deselegante derrubar o sistema, mas acionar a proteção do Windows acho que também não é o caminho, em muitos ambientes os usuários se autenticam com uma mesma conta, 

    o que você pode fazer é registrar o tempo em cada operação e sempre que uma nova operação for solicitada você verifica o tempo, se superior desvie para sua tela de login

    Se a resposta contribuiu com seu aprendizado por favor marque como Útil
    Se solucionou seu problema por favor marque como Resposta
    Atenção, se seu problema foi resolvido não deixe o post aberto 

    Visite : www.codigoexpresso.com.br 

    • Marcado como Resposta Eduardo Milani sábado, 30 de julho de 2016 14:34
    sexta-feira, 29 de julho de 2016 22:28
  • Obrigado pelas dicas!
    sábado, 30 de julho de 2016 14:35