none
Fechar janela se não mexer no mouse. RRS feed

  • Pergunta

  • Tenho uma tela de  login, após fazer o login abrira um tela principal. Quero que se em 10 segundos não for mexido no mouse a tela principal sera fechada retornando a tela de login.

    Como posso fazer isso.

    Desde já agradeço.

    segunda-feira, 27 de julho de 2015 16:36

Respostas

  • Leonardo,

    eu entendi a sua necessidade, porém não recomendo que você faça esse procedimento.

    O usuário não mexer o mouse não necessariamente indica que ele não esteja usando o sistema.

    Ele pode estar lendo um relatório, ou consultando uma planilha auxiliar para dar andamento no sistema.

    O procedimento correto para enviar um usuário para a tela de login, depois de um período de inatividade é controlar a sessão do usuário.

    Ou seja, após o Login você guarda uma Session["Usuario"] = objUsuario

    Contendo algumas informações do usuário como ID, Nome, Email, Permissões.

    E sempre q o usuário tentar interagir com o sistema, vc verifica se Session["Usuario"] == null

    Caso afirmativo você redireciona para o Login, caso contrário deixa ele prosseguir.

    Bons Códigos !


    Att, Lucio Rogerio


    Espero ter ajudado, se ajudei, por favor "Vote como Útil", e se resolvi seu problema, clique em "Propor como Resposta".

    • Sugerido como Resposta CarlosEduardo Ferreira terça-feira, 28 de julho de 2015 14:31
    • Marcado como Resposta Marcos SJ sexta-feira, 31 de julho de 2015 18:55
    segunda-feira, 27 de julho de 2015 17:15

Todas as Respostas

  • Boa tarde Leonardo!

    Fiz um exemplo de como pode ser feito esta verificação, porém não sei se essa é a melhor maneira de ser feito, portanto aguarde outras respostas aqui no fórum, de repente aparecerá algo mais otimizado e correto de realizar esta verificação.

    Segue abaixo o exemplo:

    1. Adicione um componente do Timer no seu formulário e altere a propriedade Interval para 10000 (ou seja os 10 segundos);
    2. No evento load do formulário principal inicie e timer;
    3. Crie uma variável booleana para analisar se houve movimentação;
    4. Ative o evento MouseMove  da tela principal e faça a variável criada receber true se o evento foi disparado.
    5. E no evento Tick do Timer faça a verificação e tome a ação desejada, no meu caso exibo uma mensagem num messagebox.

    Segue o code:

     private void Form1_Load(object sender, EventArgs e)
            {
                timer1.Start();
    
            }
    
            private void Form1_MouseMove(object sender, MouseEventArgs e)
            {
                movimentou = true;
            }
    
            bool movimentou;
    
            private void timer1_Tick(object sender, EventArgs e)
            {
                if (movimentou)
                {
                    MessageBox.Show("Mexeu!");
                    timer1.Stop();
                }
                else
                {
                    MessageBox.Show("Não mexeu!");
                    timer1.Stop();
                }            
            }

    Lembrando que é só um exemplo de como pode ser feito e não sei se é a melhor maneira de fazê-lo!

    Abraço e espero ter ajudado.


    Pablo Batista Cardoso



    segunda-feira, 27 de julho de 2015 17:14
  • Boa tarde,

    Por falta de retorno do usuário, esta thread será encerrada.

    Caso seja necessário, por gentileza, abra uma thread nova.

    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, 31 de julho de 2015 18:55