Ich möchte mit der Entwicklung für Kinect beginnen, aber das schwierigste Thema dafür - wie man Tastatur- und Mauseingaben an jede Anwendung sendet. In der vorherigen Frage habe ich einen Rat erhalten, meinen eigenen Treiber für diese Geräte zu entwickeln, aber dies wird eine Weile dauern.
Ich stelle mir eine Anwendung wie ein Gate vor, die SendMessages in systemweite Eingaben oder Treiberanwendungen mit API übersetzen kann, um diese Eingaben zu senden. Ich frage mich also, ob es Treiber oder Simulatoren gibt, die mit C # oder C ++ interagieren können.
Kleine Ausgabe: SendMessage, PostMessage, keybd_event funktioniert nur unter Windows-Anwendungen mit allgemeiner Nachrichtenschleife. Ich brauche also eine Treiberanwendung, die auf niedriger Kernel-Ebene funktioniert.
Antworten:
Für eine C # -Anwendung:
Um die Maus zu bewegen, ist die Cursor-Klasse unser Freund, da Cursor.Position zum Bewegen der Maus verwendet werden kann.
Um Tastendrücke zu simulieren, ist die Klasse Sendkeys Ihr Freund. SendKeys.Send () wird zum Simulieren eines Tastendrucks verwendet
Zum Klicken mit der Maus kenne ich keine netten Wrapper, aber dieser Code sollte funktionieren:
(Ersetzen Sie einfach x und y durch die tatsächliche Mausposition, möglicherweise verwenden Sie die Cursor-Klasse erneut.)
Alternativ können Sie die globale Maus- und Tastaturbibliothek von CodeProject für eine einfache und übersichtliche Oberfläche des gesamten Prozesses verwenden
quelle
Sie müssen lediglich einen Systemtreiber für ein Human Interface Device (HID) erstellen. Der vorherige Rat zum Erstellen eines Treibers ist richtig, da Sie, wie Sie bemerkt haben, Ereignisse nicht einfach in übergeordnete Systeme einfügen und eine universelle Abdeckung erhalten können.
Vielleicht möchten Sie hier beginnen: Geben Sie hier die Linkbeschreibung ein und suchen Sie in MSDN nach Treiberbeispielen, auf denen Ihre Arbeit basiert.
quelle
Der beste Weg, dies zu tun, besteht darin, mit WDK einen eigenen Tastatur- / Maustreiber zu erstellen. Es ist eine genaue und gut aussehende Lösung, aber es wird viel Zeit in Anspruch nehmen, wenn Sie Anfänger in der Programmierung sind.
Eine andere Lösung ist die Verwendung von GlovePIE . Sie können Ihr eigenes Skript aufschreiben und dann verwenden. Dann müssen Sie eine Nachricht mit Ihrer Anwendung an GlovePIE senden. Dadurch werden Eingaben auf Kernel-Ebene generiert, sodass dies in DirectX-Spielen und Nachrichtenschleifenanwendungen funktioniert.
Nun, ich möchte wirklich so etwas, aber mit der Möglichkeit, als Hintergrundprozess (GlovePIE startet mit dem Fenstermodus und dann können Sie ihn drehen) oder vielleicht als Bibliothek ausgeführt werden. Wenn ich etwas anderes gefunden habe, aktualisiere ich die Antwort.
quelle