Simulieren Maus verschieben / Klick / keyPress in einer Anwendung, die nicht aktiv ist
Frage
Ich weiß, wie Maus- und Tastaturereignisse zu simulieren, aber sie handeln, als ob der Benutzer hat sie, so dass sie das Fenster beeinflussen, die aktiv ist. Was ich brauche, ist eine dieser Eingaben zu simulieren, aber in einem Fenster, das nicht aktiv ist.
Ich sage nicht, dass es minimiert wird, vorstellen, zum Beispiel, haben Sie MSPaint und Notizblock. Notepad ist vor Farbe. Und Sie wollen Mausklicks in bestimmten Koordinaten des Farbfensters zu simulieren, ohne sie jedoch aktiv Einstellung, die es ermöglicht, den Benutzer mit dem Editor zu halten, die in fron von Farbe ist.
Ist das überhaupt möglich? Dank!
Lösung
Sie können folgendes tun:
1) erhalten die HWND
des Fensters, innerhalb dessen Sie möchten Ereignisse simulieren. Um dies zu tun, können Sie die FindWindow
Funktion, die zwei Parameter übernimmt, von denen eine den Klassennamen des Fensters (Sie verwenden NULL
können) und die andere den Namen des Fensters (MSDN-Dokumentation für Details);
2) eine Nachricht an das gewünschte Fenster senden SendMessage
Funktion. Die Parameter sind: der vorherige erhaltenen Fenstergriff (HWND
), die Nachricht (die beispielsweise WM_KEYDOWN
sein kann, oder WM_MOUSEMOVE
, WM_LBUTTONDOWN
etc.), die WPARAM
der Nachricht (die im Fall einer WM_KEYDOWN
ist das virtuelle Tastencode der Taste ) und schließlich die LPARAM
der Nachricht (die im Falle WM_KEYDOWN
recht komplex ist und Sie sollten für Details überprüfen MSDN).
Meiner Meinung nach ist dies ausreichend für das, was Sie tun mögen.
Andere Tipps
Nun, wenn Sie JAVA wussten, dass Sie die Roboter-Klasse verwenden.
Diese Klasse wird verwendet, um native Systemeingabeereignisse zu erzeugen, für die Zwecke der Testautomatisierung, selbstablaufenden Demos und andere Anwendungen, bei denen die Kontrolle über die Maus und die Tastatur ist erforderlich
Vielleicht Theres etwas simular in .net?