Pergunta

Bom dia,

Eu sou o desenvolvedor de um tamanho médio aplicação PDA que será usado nas ruas. O PDA irá conter alguns dados vagamente sensíveis (nomes e endereços, etc). A criptografia em banco de dados móvel já é tratada, no entanto, se alguém pegou o PDA, embora foi registrado no que poderia felizmente passar os dados até que a bateria morreu ou eles fecharam a aplicação e teve que efetuar login novamente.

Quando os usuários acessam o aplicativo PDA eles precisam inserir seu nome de usuário e número PIN. Versão 1 deste software teve um evento viciado em cada botão no sistema de modo que quando o botão foi pressionado, ele atualizou uma variável chamada LastActionTime. A RAN temporizador no formulário principal e se isso LastActionTime foi mais de 10 minutos atrás, em seguida, o sistema iria vomitar o formulário de login novamente até que o usuário anterior / admin logado volta novamente (assim como as janelas lockout tela).

Esta funcionou bem ... em certo sentido ... o problema com isso é que ele só estava lidando com botões e não estava lidando com os outros controles, como ListViews, PictureBoxes, etc.

Existe alguma boa maneira de conseguir isso? Por exemplo, existe uma maneira que eu poderia estender uma classe Windows Form para lidar com cada evento e atualizar essa variável em conformidade? Ou eu posso fazer algo windows-esque que iria lidar com cada evento único rato no formulário?

Para ser completamente concisa, o que eu quero alcançar é que quando a tela PDA / botões não foram tocados por 10 minutos, o PDA vai saber isso e permitir-me para disparar o meu método de bloqueio.

Todos os pensamentos, ajuda e orientação seria muito apreciado.

Editar :. Eu estou usando Compact Framework 2.0 no Windows Mobile 6.0, no entanto, a função precisa para trabalhar em Windows Mobile 5.0 e acima

Foi útil?

Solução

Uma possível solução é confiar em entrar no estado de energia ociosa do PDA. Você pode registrar uma notificação para este usando OpenNETCF.WindowsCE.PowerManager.PowerIdle Evento. Na verdade, é uma boa idéia para ter em conta considerações de gerenciamento de energia. Você não pode esperar que o seu PDA para ser no mesmo estado o tempo todo.

Outra solução seria para monitorar o evento inativo do controlador de entrada (Veja esta link ). No entanto, esta solução é muito específica do dispositivo.

Infelizmente não há nenhuma maneira no Windows CE para registrar um gancho de evento do mouse global.

O acima foram OS soluções. Não há uma maneira fácil de fazê-lo com estender classes de formulário do Windows e Controle. Provavelmente você precisa estender todos os controles que você estaria usando. A solução mais fácil seria a de implementar o método GetFocus para todos os seus controles e o formulário. Você pode redefinir seu contador lá.

By the way, em um ambiente de trabalho isso pode facilmente alcançado com GetLastInputInfo.

Outras dicas

Verifique este post out:

http: //social.msdn.microsoft.com/Forums/en-US/netfxcompact/thread/906b016d-f1ee-4b3e-b3df-1e3a6fea282a/

Eu lutei com o mesmo problema, e acabou usando Application.AddMessageFilter para obter os resultados adequados. Esse fio, eventualmente, contém um link para um projeto de exemplo que eu escrevi mostrando o trabalho inatividade timer, inclusive fechando subdialogs se necessário para voltar a uma tela da janela principal.

David

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top