Comment simuler l'entrée au clavier dans TOUTES les applications?

Je suis en train d'écrire une application (en C#) qui, comme une partie de cela doit simuler et envoyer quelques coups de clés à une autre application. Je suis en utilisant http://inputsimulator.codeplex.com/ projet pour la simulation des touches, et il fonctionne dans de nombreuses applications, mais dans certains, il n'est pas - c'est à dire un Combat Mortel 4.

J'ai googlé ce sujet, et trouvé beaucoup de réponses allant de "c'est impossible" à "vous devez utiliser XXX bibliothèque", etc. Ceux répondu m'a effrayé beaucoup, et même presque convaincu que je ne suis pas en mesure de le faire à ce moment, MAIS...

M$ Clavier Virtuel fonctionne. Il fonctionne dans TOUTES les applications. Donc, c'EST possible... quelqu'un d'entre vous, des gens intelligents, qui savent comment puis-je y parvenir?

quel code que vous avez réellement la mesure de ce que vous avez essayé ..?
Je suis en utilisant le projet que j'ai mentionné ci-dessus. La méthode la plus basse qu'il y a une DllImport("user32.dll", SetLastError = true)] interne static extern UInt32 SendInput(UInt32 numberOfInputs, InputMsg[] entrées, Int32 sizeOfInputStructure); et il fonctionne parfaitement dans de nombreuses applications, mais pas tous. :/
Je l'ingénierie inverse de la Windows Sur le Clavier à l'Écran et il utilise la même méthode de saisie en tant que bibliothèque est lié à (SendInput). J'ai accroché tout le clavier des fonctions connexes qui vient à l'esprit (keybd_event, SendInput, SetKeyboardState, etc.) et la seule fonction qui a été appelé a été SendInput). Essayez de double-vérification de la bibliothèque de code par rapport à la documentation MSDN.
Wow, le respect pour cela. 🙂 OK, donc cela garantit moi, c'est possible. Étrange que ça ne fonctionne pas, cependant. Je vais essayer de voire le triple de lire toute la documentation à ce sujet. Peut-être que c'est de la matière n'est pas relié directement avec le clavier, par exemple en se concentrant? Je n'aime pas mettre n'importe n'importe où (mais cela fonctionne dans certaines applications).
Au début, j'allais démonter OSK et accrocher tout le clavier des fonctions connexes, j'ai décidé qu'il serait plus facile de contrôler l'exécution du programme de l'API Monitor (rohitab.com/apimonitor) car il ya seulement une poignée de fonctions capables de produire de l'entrée de cette manière. Vous devez vous connecter à ces fonctions ci-dessus, ainsi que toutes les fonctions relatives à la numérisation de codes (ils doivent être dans la même catégorie).

OriginalL'auteur Fenix Voltres | 2012-01-06