Usuário com melhor resposta
Fechar aplicação após tempo inativo

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.
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
-
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
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 -
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.
- Editado André SeccoMVP sexta-feira, 29 de julho de 2016 17:49
-
É 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. -
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.
- Editado André SeccoMVP 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
-
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
-