Comment feriez-vous une application Windows qui bloque de manière conditionnelle les entrées?

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

  •  06-07-2019
  •  | 
  •  

Question

Vous avez peut-être entendu parler de PawSense , un utilitaire Windows uniquement qui empêche la saisie de frappes au clavier. lorsqu'il pense qu'il y a un chat ou un autre animal sur le clavier en tapant une entrée non-sens telle que "zlxkkkkkkkk"; Cela semble être un projet amusant à faire pendant mon temps libre, mais je me demandais quelques détails de sa mise en œuvre.

Je pense que je pourrais en faire partie, soit avec une heuristique codée en dur, soit en utilisant un algorithme de reconnaissance de motif (auquel j'ai déjà été exposé et avec lequel je me sens à l'aise). Ma question concerne la programmation des systèmes et la logique de blocage des entrées.

Votre application doit observer les entrées et présenter un défi si vous détectez le typage de chat. Souhaitez-vous garder une mémoire tampon des frappes récentes et ne les laisser passer que s'il s'agit d'une saisie non-cat? Ou, en cas de dactylographie du chat, laisseriez-vous seulement un petit nombre avant de bloquer l'entrée? Quelle serait la logique que vous voudriez utiliser?

En ce qui concerne les mécanismes réels de blocage des entrées en C #, par exemple, le site soulève d’autres questions. Ma question, pour réitérer, est quelle logique vous utiliseriez pour détecter et bloquer le typage de chat.

Était-ce utile?

La solution

Je voudrais attendre qu’il y ait un chat sur le clavier, puis bloquer l’entrée, un tampon pouvant poser problème.

Par exemple, si je tape et que je passe d’une fenêtre à l’autre, comment détermineriez-vous l’emplacement des touches au clavier?

Soyez aussi simple que nécessaire.

Autres conseils

Vous devez envisager d'introduire un hook WIN32 à l'échelle du système . Cet article MSDN en couvre les bases (attention, il spécifie les deux applications. ou des crochets de niveau de fil et des crochets à l’échelle du système).

Une fois que vous avez compris cela, vous devez capturer plusieurs messages liés au clavier, WM_KEYUP bien sûr, ainsi que quelques autres messages WM_KEYxxxx, en fonction de vos besoins.

Vous devrez ensuite introduire la logique qui détermine si les frappes au clavier sont valides ou charabiaques, puis transmettez les messages (afin qu’ils puissent éventuellement arriver à l’application ciblée) ou les ignorer.

Sans rien savoir à ce sujet, je commencerais par me fonder sur le temps pendant lequel les touches sont enfoncées et non sur les touches effectivement enfoncées, en pensant qu'un animal ne va pas appuyer simplement sur une touche et la relâcher très rapidement, puis sur un autre. , etc., mais est plus susceptible de faire une pause sur un ensemble de clés.

Donc, si vous pouvez simplement appuyer sur les touches du temps, je pense que cela pourrait fonctionner.

Penser à la charge. Je voudrais commencer par quelque chose comme suit:

  1. N'attendez aucune activité de l'utilisateur pendant 2 minutes.
  2. Démarrer votre application
  3. Écoutez les hits du clavier
  4. Faites correspondre les clés saisies si elles existent dans le dictionnaire
  5. Bloquez le clavier après six ou sept ans.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top