Wie kann ich programmgesteuert ein Ereignis erstellen, das das Drücken einer Taste auf der Tastatur simuliert?
c#
.net
wpf
keyboard-events
Dan Vogel
quelle
quelle
Antworten:
Die Frage ist mit WPF gekennzeichnet, aber die bisherigen Antworten sind spezifische WinForms und Win32.
Erstellen Sie dazu in WPF einfach ein KeyEventArgs und rufen Sie RaiseEvent für das Ziel auf. So senden Sie beispielsweise ein KeyDown-Ereignis zum Einfügen eines Schlüssels an das aktuell fokussierte Element:
Diese Lösung basiert nicht auf nativen Anrufen oder Windows-Interna und sollte viel zuverlässiger sein als die anderen. Außerdem können Sie einen Tastendruck auf ein bestimmtes Element simulieren.
Beachten Sie, dass dieser Code nur für PreviewKeyDown-, KeyDown-, PreviewKeyUp- und KeyUp-Ereignisse gilt. Wenn Sie TextInput-Ereignisse senden möchten, gehen Sie stattdessen folgendermaßen vor:
Beachten Sie auch Folgendes:
Steuerelemente erwarten Preview-Ereignisse, z. B. sollte PreviewKeyDown vor KeyDown stehen
Mit target.RaiseEvent (...) wird das Ereignis ohne Meta-Verarbeitung wie Beschleuniger, Textkomposition und IME direkt an das Ziel gesendet. Dies ist normalerweise das, was Sie wollen. Wenn Sie jedoch aus irgendeinem Grund wirklich tun, um die tatsächlichen Tastaturtasten zu simulieren, verwenden Sie stattdessen InputManager.ProcessInput ().
quelle
Keyboard.PrimaryDevice.ActiveSource
siehe stackoverflow.com/questions/10820990/...Ctrl+C
)Um Schlüsselereignisse ohne Windows Forms-Kontext zu erzeugen, können Sie die folgende Methode verwenden:
Beispielcode ist unten angegeben:
Liste der virtuellen Tasten definiert sind hier .
Um das vollständige Bild zu erhalten, verwenden Sie bitte den folgenden Link: http://tksinghal.blogspot.in/2011/04/how-to-press-and-hold-keyboard-key.html
quelle
Ich habe es nicht benutzt, aber SendKeys kann tun, was Sie wollen.
Microsoft hat einige weitere Beispiele für die Verwendung hier .
quelle
Leicht! (weil jemand anderes bereits die Arbeit für uns erledigt hat ...)
Nachdem ich viel Zeit damit verbracht hatte, dies mit den vorgeschlagenen Antworten zu versuchen, stieß ich auf dieses Codeplex-Projekt Windows Input Simulator, das es so einfach wie möglich machte, einen Tastendruck zu simulieren:
Die Installation des Pakets kann über den NuGet-Paketmanager oder über die Paketmanagerkonsole erfolgen:
Verwenden Sie diese 2 Codezeilen:
inputSimulator = new InputSimulator() inputSimulator.Keyboard.KeyDown(VirtualKeyCode.RETURN)
Und das ist es!
-------BEARBEITEN--------
Die Projektseite auf Codeplex ist aus irgendeinem Grund markiert. Dies ist der Link zur NuGet-Galerie.
quelle
Windows SendMessage API mit send WM_KEYDOWN .
quelle