2009-04-09 3 views
0

J'ai une application qui enregistre une date/heure lorsque la barre d'espace est pressée Malheureusement, la fenêtre n'a pas toujours le focus, pour diverses raisons. par exemple: popup de vérification de virus, mise à jour d'itunes, mise à jour de windows, etcjoystick d'interrogation C#

alors ce qui serait une bonne idée, c'est d'utiliser un bouton de joystick, alors quelle que soit la fenêtre qui a le focus, je peux toujours détecter l'événement et l'enregistrement la date/heure de l'appui. Maintenant, j'ai jeté un oeil à quelques tutoriels de jeu, mais ils semblent avoir l'interrogation de joystick liée à l'événement d'actualisation de l'écran, parce que dans un jeu je suppose que l'ordinateur est lent et l'écran ne rafraîchit pas souvent, avoir appuyé sur le bouton du joystick ne fera aucune différence de toute façon.

Cela ne veut pas vraiment répondre à mes besoins, alors je regarde courir un fil qui interroge le joystick tous si souvent

Mes questions sont

  1. est un fond enfilez la meilleure solution
  2. à quelle fréquence devrais-je interroger le joystick
  3. quel type de minuterie dois-je utiliser pour déterminer la fréquence d'interrogation. Je souhaite que les réponses soient au moins équivalentes à celles d'un clavier.

Vous devez également vous assurer qu'il ne se répète pas automatiquement si le déclencheur est maintenu enfoncé.

tout exemple de code (C#) apprécié

grâce

alex

+0

Vous nous demandez essentiellement de vous apprendre à réaliser une application de keylogging. Sérieusement, quelle est l'utilité de cette application? –

+0

keylogging un joystick, à quoi cela servirait-il? Je chronomètre les événements. lorsque le bouton est pressé, il enregistre l'heure. plus tard, je vais changer le bouton pour un capteur optique, vous savez que les fentes circulent sur une piste de course, etc – bumperbox

Répondre

1

Votre meilleur pari serait de créer un objet Timer sur votre formulaire, et attacher le contrôle du joystick à l'événement Tick.

J'ai également constaté que l'exécution de tâches simples comme celle-ci toutes les 100ms (10 fois par seconde) a un effet négligeable sur l'utilisation du processeur.

2

Si vous voulez lancer la scrutation de la manette juste parce que vous n'êtes pas capable de capturer l'événement clavier, je pense que vous devez retravailler votre stratégie.

Même si votre formulaire n'a pas le focus, vous pouvez vous assurer que vous connaissez l'état du clavier.

  1. Vous pouvez configurer un raccourci clavier à l'échelle du système qui peut être effectué en C# à l'aide de l'appel de l'API SetWindowsHookEx.

Ceci est fouillant un peu dans le code non managé et API Windows, mais je pense qu'il est une meilleure idée que l'interrogation d'une manette de jeu parce que vous ne aurez pas besoin d'ajouter un joystick à votre ordinateur juste parce que vous devez capturer datetime à la presse d'une barre d'espace.

Faites une petite recherche sur google pour les crochets de clavier en C#. C'est plus facile que beaucoup de gens croient.

Je ne pense pas que l'utilisation d'un objet timer pour faire ceci est une bonne idée. Parce que je crois que vous avez dit que vous devez le faire à la pression d'une touche.

1

Utilise quelque chose comme AHK (Auto HotKey) c'est un langage simple qui peut être compilé en EXE et qui est conçu pour automatiser le clavier et la souris, je ne suis pas sûr à 100% à quel point ça marche avec un joystick, mais j'en suis sûr il est possible qu'ils aient réussi à écrire des trucs pour les télécommandes wii.

De plus, le canal IRC et les forums ont toujours des personnes prêtes à aider si nécessaire.