Compact Framework - Fonction de délai d'attente pour le verrouillage de l'interface utilisateur après une période d'inactivité

StackOverflow https://stackoverflow.com/questions/349255

Question

Bonjour,

Je suis le développeur d'une application pour PDA de taille moyenne qui sera utilisée dans la rue. Le PDA contiendra des données vaguement sensibles (noms et adresses, etc.). Le chiffrement de la base de données mobile est déjà pris en charge. Toutefois, si quelqu'un se procurait le PDA alors qu'il était connecté, il pouvait passer en revue les données jusqu'à la mort de la batterie ou fermer l'application et se reconnecter.

Lorsque les utilisateurs accèdent à l'application PDA, ils doivent entrer leur nom d'utilisateur et leur code PIN. La version 1 de ce logiciel avait un événement lié à chaque bouton du système. Ainsi, lorsque vous appuyez sur ce bouton, il met à jour une variable appelée LastActionTime. Une minuterie fonctionnait sur le formulaire principal et si LastActionTime datait de plus de 10 minutes, le système relance le formulaire de connexion jusqu'à ce que le précédent utilisateur / administrateur se reconnecte (à la manière de l'écran de verrouillage de Windows).

Cela a bien fonctionné ... dans un sens ... le problème est qu’il s’agissait uniquement de boutons et non de contrôles, comme ListViews, PictureBoxes, etc.

Existe-t-il un bon moyen d'y parvenir? Par exemple, y a-t-il moyen d'étendre une classe Windows Form pour gérer chaque événement et mettre à jour cette variable en conséquence? Ou puis-je faire quelque chose Windows-esque qui gèrerait chaque événement de souris sur le formulaire?

Pour être tout à fait concis, ce que je veux réaliser, c’est que lorsque l’écran / les boutons du PDA n’ont pas été touchés pendant 10 minutes, le PDA le saura et me permettra de déclencher ma méthode de verrouillage.

Toute pensée, aide et conseils seraient les bienvenus.

Modifier : j'utilise Compact Framework 2.0 sur Windows Mobile 6.0, mais la fonction doit fonctionner sur Windows Mobile 5.0 et versions ultérieures.

Était-ce utile?

La solution

Une solution possible consiste à utiliser l'état d'inactivité du PDA. Vous pouvez enregistrer une notification à cet effet à l'aide de l'événement OpenNETCF.WindowsCE.PowerManager.PowerIdle. En fait, il est judicieux de prendre en compte les considérations de gestion de l’alimentation. Vous ne pouvez pas vous attendre à ce que votre PDA soit toujours dans le même état.

Une autre solution serait de surveiller l'événement inactif du pilote d'entrée (voir cette lien ). Cependant, cette solution est très spécifique à chaque appareil.

Malheureusement, Windows CE ne dispose d'aucun moyen pour enregistrer un hook d'événement de souris global.

Ce qui précède était des solutions OS. Il n’est pas facile de le faire avec l’extension des classes Windows Form et Control. Vous devrez probablement étendre tous les contrôles que vous utiliseriez. La solution la plus simple consiste à implémenter la méthode GetFocus pour tous vos contrôles et le formulaire. Vous pouvez réinitialiser votre compteur à cet endroit.

En passant, dans un environnement de bureau, cela peut être facilement réalisé avec GetLastInputInfo.

Autres conseils

Voir ce message:

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

J'ai lutté avec le même problème et j'ai fini par utiliser Application.AddMessageFilter pour obtenir les résultats appropriés. Ce fil de discussion contient finalement un lien vers un exemple de projet que j'ai écrit montrant le fonctionnement du minuteur d'inactivité, y compris la fermeture des sous-dialogues si nécessaire pour revenir à l'écran de la fenêtre principale.

David

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top