Question

J'ai écrit une application avec une zone de texte simple qui tente d'identifier un utilisateur de leurs habitudes de frappe (intervalle entre touches, touche la durée est maintenue, le temps entre les traits principaux à savoir a-> s est plus rapide que a-> v pour certains utilisateurs, plus court pour d'autres en fonction du style de frappe). Il est loin d'être parfait, mais il identifie correctement les différences modérées grandes dans le style.

J'espère l'utiliser comme une forme de contrôle de sécurité -. Si le style de frappe de l'utilisateur ne correspond pas à un modèle reconnu, rapport à un serveur central

Bien sûr, l'étape suivante à tester est de commencer à capturer les habitudes de frappe « réguliers » -.-À-dire lors de la navigation, la commutation entre les applications, etc

Ce que je ne peux pas comprendre comment faire est entrée du clavier de capture pour toutes les applications (à l'exception de l'écran de connexion / accueil, postes de travail de rechange, etc. - je n'ai aucune raison d'analyser cela et il y a entrée probablement pas assez pour analyser toute façon )

Disclaimer: Oui, je sais que cela se rapproche dangereusement d'écrire un keylogger qui est verboten mais si je voulais le faire, j'écrirait une pilote de clavier en C ++ - Je suis sûr que ce serait beaucoup plus simple et plus facile à obscurcir qu'un flandrin .Net MSIL Assemblée. Je je vais sans doute repousser «C'est un keylogger » commentaires mais je l'ai frappé un mur et le besoin de demander quelque part ...

Je ne ai pas besoin l'application pour être caché - mais voudrais idéalement être en mesure d'entrée de capture sans confirmation explicite de l'utilisateur (au-delà de l'installation par un administrateur) - Si la confirmation de l'utilisateur est nécessaire, je peux vivre avec ça (juste) si elle peut être unique et j'ai un moyen de surveiller et dénis de rapport.

Est-ce même possible en .Net? Les exemples que j'ai pu trouver fonctionner soit en ajoutant un crochet d'événement à chaque clé qui semble maladroit et j'imagine est sujette à erreur. -ou- Ils sondent l'état du clavier pour déterminer les touches enfoncées. Ce n'est pas bon pour moi comme) j'ai besoin exacte timings de si haut clés appui sur les touches / bas événements sont un must et b) il est méchant.

Il ne me surprendrait pas si le cadre est conçu pour interdire expressément ce dans ce cas, je vais devoir revenir à un code non géré pour fournir les événements. Je préfère évidemment utiliser le code managé tout le chemin.

Toute aide appréciée.

Modifier Merci à la réponse de Hans Passant, c'est la meilleure que j'ai trouvé à ce jour: http://www.codeguru.com/columns/vb/article.php/c4831

Était-ce utile?

La solution

Google SetWindowsHookEx + WH_KEYBOARD_LL, mots-clés que Google bien. Qui définit un crochet du clavier à faible niveau. Il n'est pas un crochet global ne peut donc travailler dans un programme VB.NET.

Autres conseils

.net ne fournit pas de services de ce genre, vous devrez aller plus bas et l'utilisation p / Invoke. Les options sont:

  • Win crochets
  • relève à l'aide GetAsyncKeyState
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top