2009-04-30 5 views
1

Ich weiß, wie Maus- und Tastaturereignisse simulieren, aber sie verhalten sich, als ob der Benutzer sie getan hätte, so dass sie das aktive Fenster beeinflussen. Was ich brauche ist, einen dieser Eingänge zu simulieren, aber in einem Fenster, das nicht aktiv ist.Simulate Mouse move/click/keyPress in einer Anwendung, die nicht aktiv ist

Ich sage nicht, dass es minimiert ist, stellen Sie sich zum Beispiel vor, Sie haben msPaint und Notizblock. Notizblock ist vor Farbe. Und Sie möchten Mausklicks in bestimmten Koordinaten des Malfensters simulieren, ohne sie jedoch aktiv zu setzen, so dass der Benutzer weiterhin Notizblock verwenden kann, der sich vor der Farbe befindet.

Ist das überhaupt möglich? Danke!

+0

Welche Werkzeuge/Sprachen verwenden Sie? –

Antwort

3

Sie können folgendes tun:

1) erhalten die HWND des Fensters, innerhalb dessen Sie Ereignisse simulieren wollen. Um dies zu tun, können Sie die Funktion FindWindow verwenden, die zwei Parameter benötigt, von denen einer der Klassenname des Fensters ist (Sie können NULL verwenden) und der andere der Name des Fensters (siehe MSDN-Dokumentation für Details);

2) senden Sie eine Nachricht an das gewünschte Fenster mit SendMessage Funktion. Die Parameter sind: das zuvor erhaltene Fensterhandle (HWND), die Nachricht (die zum Beispiel WM_KEYDOWN oder WM_MOUSEMOVE, WM_LBUTTONDOWN usw. sein kann), die WPARAM der Nachricht (die im Fall von WM_KEYDOWN der virtuelle Schlüsselcode des Schlüssels ist) und schließlich die LPARAM der Nachricht (die im Fall von WM_KEYDOWN ist ziemlich komplex und Sie sollten MSDN für Details überprüfen).

Meiner Meinung nach ist dies ausreichend für das, was Sie vorhaben.

+0

Hat das OP mit diesem Ansatz Erfolg gehabt? Ich habe meinen Weg durch einige heftige Threads gelesen, die behaupten, dass Methode 2) nicht funktioniert. –

0

Nun, wenn Sie JAVA kannten, könnten Sie die Roboterklasse verwenden.

Diese Klasse zu erzeugen native Systemeingabeereignisse für die Zwecke der Testautomatisierung, selbstablaufenden Demos und andere Anwendungen, bei denen die Kontrolle über die Maus und die Tastatur benötigt wird

Java robots class

verwendet

Vielleicht ist etwas Ähnliches in .net?

+0

Sie können nicht sehen, wie Sie die Robots-Klasse verwenden können, um Tastendrücke an ein inaktives Fenster zu senden –

Verwandte Themen