Comment puis-je créer par programme un événement qui simulerait une touche appuyée sur le clavier?
c#
.net
wpf
keyboard-events
Dan Vogel
la source
la source
Réponses:
La question est étiquetée WPF mais les réponses à ce jour sont spécifiques à WinForms et Win32.
Pour ce faire dans WPF, créez simplement un KeyEventArgs et appelez RaiseEvent sur la cible. Par exemple, pour envoyer un événement Insert key KeyDown à l'élément actuellement sélectionné:
Cette solution ne repose pas sur des appels natifs ni sur des composants internes de Windows et devrait être beaucoup plus fiable que les autres. Il vous permet également de simuler une pression de touche sur un élément spécifique.
Notez que ce code s'applique uniquement aux événements PreviewKeyDown, KeyDown, PreviewKeyUp et KeyUp. Si vous souhaitez envoyer des événements TextInput, vous le ferez à la place:
Notez également que:
Les contrôles s'attendent à recevoir des événements d'aperçu, par exemple, PreviewKeyDown doit précéder KeyDown
L'utilisation de target.RaiseEvent (...) envoie l'événement directement à la cible sans méta-traitement tel que les accélérateurs, la composition de texte et l'IME. C'est normalement ce que vous voulez. D'un autre côté, si vous faites vraiment quoi simuler des touches de clavier réelles pour une raison quelconque, vous utiliserez plutôt InputManager.ProcessInput ().
la source
Keyboard.PrimaryDevice.ActiveSource
Ctrl+C
)Pour produire des événements clés sans contexte Windows Forms, nous pouvons utiliser la méthode suivante,
un exemple de code est donné ci-dessous:
La liste des clés virtuelles est définie ici .
Pour obtenir une image complète, veuillez utiliser le lien ci-dessous, http://tksinghal.blogspot.in/2011/04/how-to-press-and-hold-keyboard-key.html
la source
Je ne l'ai pas utilisé, mais SendKeys peut faire ce que vous voulez.
Microsoft a d'autres exemples d'utilisation ici .
la source
Facilement! (parce que quelqu'un d'autre a déjà fait le travail pour nous ...)
Après avoir passé beaucoup de temps à essayer cela avec les réponses suggérées, je suis tombé sur ce projet codeplex Windows Input Simulator qui simplifiait la simulation d'une pression sur une touche:
Installez le package, peut être fait ou à partir du gestionnaire de packages NuGet ou de la console du gestionnaire de packages comme:
Utilisez ces 2 lignes de code:
inputSimulator = new InputSimulator() inputSimulator.Keyboard.KeyDown(VirtualKeyCode.RETURN)
Et c'est tout!
-------ÉDITER--------
La page du projet sur CodePlex est marqué pour une raison quelconque, c'est le lien vers la galerie NuGet.
la source
API Windows SendMessage avec send WM_KEYDOWN .
la source