Taste "Enter" drücken in einem anderen Programm?

beta20

Top Contributor
Hallo zusammen,

ich möchte gerne folgendes realisieren:
Wenn eine Bedingung erfüllt ist, soll die "Enter" - Taste in einem anderen Programm (als Beispiel in MS Word) gedrückt werden.
Wie kann ich das realisieren?

a) Wie kann ich die "Enter" Taste drücken über mein JAVA Programm
b) Wie weiß meine JAVA Anwendung, dass das in MS Word geschieht? (Irgendwie den Pfad angeben)

Freue mich über jede Hilfe.
 
Die Enter-Taste (wahrscheinlich eher Return) könnte "global" gedrückt werden, "Mitbekommen" einer anderen Anwendung gar nicht (auch nach bekommen des Fokus gar nicht) - aus Sicherheitsgründen nicht.

Für das könntest du einen global key hook schreiben in C/C++/C#:
http://www.codeproject.com/Articles/19004/A-Simple-C-Global-Low-Level-Keyboard-Hook
Ich bin froh, das mein Virenscanner das sofort "mitbekommen" würd.

DENN: Alle Tastatureingaben global aufzeichnen/mitschneiden, ich glaube, jeder weiß, was das bedeuten würd. *Schluckauf*
 
Also was ich konkret vorhabe:

Ein kleines JAVA Programm zu schreiben, das mit einem Münzprüfer per USB verbunden ist.
Sobald eine Münze eingeworfen wurde, soll die Return Taste in einem anderen Programm gedrückt werden, sodass dessen Funktion gestartet wird.
Ist das irgendwie realisierbar?
 
Ich habe mal in einem anderem Forum, eine kleine Lib namens "Robot" gesehen, mit welcher du dies eventuell bewerkstelligen könntest. Kannst ja mal nach googlen, ist nicht allzu bekannt, da sie von einem "Privat-Mann" entwickelt wurde.

MfG Aljosha
 
Unter Umständen ist es eine Alternative, das Windows-API zu verwenden. Man kann es über JNA recht bequem nutzen (man muß nur zwei jar-Dateien einbinden). Allerdings muss man sich schon mit der Frage beschäftigen, wie man das richtige Dialogelement auswählt. Kann also sein, dass der Vorschlag über java.awt.Robot einfacher ist. Hier ist ein Beispiel zur Windows-API, das ein Return an ein bereits geöffnetes Notepad-Fenster sendet, das über den Titel "Unbenannt - Editor" gefunden wird:
Java:
import com.sun.jna.Library;
import com.sun.jna.Native;
import com.sun.jna.WString;
import com.sun.jna.platform.win32.WinDef.BOOL;
import com.sun.jna.platform.win32.WinDef.HWND;
import com.sun.jna.platform.win32.WinDef.LPARAM;
import com.sun.jna.platform.win32.WinDef.UINT;
import com.sun.jna.platform.win32.WinDef.WPARAM;

public class WinApi {
    final static long WM_KEYDOWN = 0x0100;
    final static long VK_RETURN = 0x0d;
   
    public interface WinApiUser32 extends Library {
        public HWND FindWindowW(WString lpClassName, WString lpWindowName);
        public BOOL PostMessageW(HWND hWnd, UINT Msg, WPARAM wParam, LPARAM lParam);
        public HWND GetDlgItem(HWND hWnd, int nIDDlgItem);
    }
   
    public static void main(String[] args) {
        WinApiUser32 user32 = (WinApiUser32) Native.loadLibrary("user32", WinApiUser32.class);
        HWND hWnd = user32.FindWindowW(null, new WString("Unbenannt - Editor"));
        hWnd = user32.GetDlgItem(hWnd, 15);
        user32.PostMessageW(hWnd, new UINT(WM_KEYDOWN), new WPARAM(VK_RETURN), null);
    }   
}
 

Zurück
Oben