# Vordergrund und Fokus setzten oder Modales Einabefeld



## Andi_CH (21. Okt 2011)

Wie kann ich ein Eingabefeld (z.B. per Timer oder X-Listener) in den Vordergrund setzten und dem den Fokus geben? Und zwar egal wer gerade den Fokus hat. (Es gelingt mir nur innerhalb der VM - wenn ich z.B. den Fokus ins Eclipse setzte bleibt der da!)

Code posten macht irgendwie keinen Sinn.

Der Hintergrund ist immer noch mein besch(iss)eidener Barcodescanner der sich wie eine Tastatur verhält.

Alternativ: Kann ich ein Eingabefensterchen ECHT modal machen? Dumm ist nur, dass ich dann Windoofs nicht mehr bedienen könnte :-( (Hm - per Socket remote abschiessen oder so)


----------



## André Uhres (24. Okt 2011)

Andi_CH hat gesagt.:


> Wie kann ich ein Eingabefeld (z.B. per Timer oder X-Listener) in den Vordergrund setzten und dem den Fokus geben? Und zwar egal wer gerade den Fokus hat. (Es gelingt mir nur innerhalb der VM - wenn ich z.B. den Fokus ins Eclipse setzte bleibt der da!)
> 
> Code posten macht irgendwie keinen Sinn.
> 
> ...



Hallo Andi_CH,

die Antwort ist einfach: Java kann das alles nicht .

Gruß,
André


----------



## Andi_CH (24. Okt 2011)

Den Verdacht hatte ich schon, aber danke für die Bestätigung.

Wenn der Auftraggeber bei seinen Forderungen bleibt, muss ich wohl auf C++ o.ä. umstellen, was ihm aber genau so wenig passt. Herrlich wenn man jemanden gegen sich selbst ausspielen kann


----------



## SlaterB (24. Okt 2011)

teste folgendes, klappt bei mir auch gegen Eclipse mehr oder weniger:

```
public class TestGUI
    extends JFrame
{
    JTextField tf = new JTextField();

    public TestGUI()    throws Exception  {
        add(tf);
        setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
        setSize(500, 300);
        setVisible(true);

        Thread.sleep(3999);
        setToFront();
    }

    private void setToFront()  {
        setExtendedState(ICONIFIED);
        setExtendedState(NORMAL);
        requestFocus();
        toFront();

        // leider leichte Anzeigefehler, besonders wenn danach ein Dialog gezeichnet wird,
        // ansonsten auch kaum ein Grund für toFront(),
        // mit repaint scheint es sich zu bessern, etwas unklar hier
        repaint();

        tf.requestFocusInWindow();
    }

    public static void main(String[] args)    throws Exception  {
        TestGUI t = new TestGUI();
    }
}
```


----------



## Andi_CH (24. Okt 2011)

Ich starte das Ding - klicke in ein beliebiges Fenster (z.B. Notepad, Eclipse oder was auch immer), tippe etwas oder "schiesse" mit dem Barcodescanner und, welch Wunder, das landet im Notepad oder eben dort wo der Fokus gerade ist!

Ich bin eben auch zur Überzeugung gekommen, dass Modalität, Focus etc. nur innerhalb derselben VM gesetzt werden können.


----------



## hdi (24. Okt 2011)

Bleibt dir nur ein Workaround über nen Robot: Alt+Tab-Events raushauen solange bis dein WindowListener ein windowActivated() feuert. Jetzt hat deine App den Fokus.


----------



## SlaterB (24. Okt 2011)

und nach 4 sec springt es auch nicht zurück?
ich habe das erste Posting als ein bestimmtes Ereignis gelesen, willst du stattdessen verhindern dass generell der Focus verloren geht?
da hat André Uhres dann wohl wirklich besser gelesen (edit: bzw. bis eben nicht noch mehr Hacks genannt werden  )


----------



## bERt0r (24. Okt 2011)

Warum musst du für deinen Barcodescanner überhaupt einen Focus versetzten? Für mich hört es sich so an, als wird ja gerade gefordert dass du irgendwo reinklickst und dann der Barcode genau da eingefügt wird wo der Benutzer vorher den Cursor hingestellt hat. Also holst du vom Scanner die Daten rein und schreibst sie per Robot raus.


----------



## thE_29 (24. Okt 2011)

Es gibt Barcodescanner die verhalten sich wie Tastaturen.. (kenne ich von der alten Firma)

Dh, wenn man einen Code scannt, wird der EAN Code einfach ausgegeben und zwar genau dort, wo der Fokus/Cursor steht..


Das Problem hört sich eher danach an, dass der User nicht weiß was er tut.. Wenn ich ein Programm habe, was mit EAN-Codes umgehen kann und ich was scanne, dann hat das EAN-Programm auch offen zu sein..

Irgendwann muss mal ein Schlussstrich gezogen werden um was sich ein Dev noch alles kümmern soll.. Soll Programm XYZ mit EAN was machen, so hat es offen zu sein und nicht zB der Browser oder sonstiges..


----------



## Andi_CH (24. Okt 2011)

SlaterB hat gesagt.:


> und nach 4 sec springt es auch nicht zurück?


Ich habe übersehen, dass ich erst noch einen loop bauen muss - scheint aber zu klappen, wobei ich es noch genauer testen muss.
Es ist halt immer noch die unschöne Variante, weil ich ein GUI basteln muss das ich gar nicht wirklich brauche und weil es dann zwingend ein exklusiver PC für diese Applikation sein muss.
Die Maschine ist zwar so nicht anderweitig nutzbar, aber z.B. Fenster des Virenscanners oder sonstige die automatisch kommen, könnte man so austricksen.



bERt0r hat gesagt.:


> Warum musst du für deinen Barcodescanner überhaupt einen Focus versetzten? Für mich hört es sich so an, als wird ja gerade gefordert dass du irgendwo reinklickst und dann der Barcode genau da eingefügt wird wo der Benutzer vorher den Cursor hingestellt hat. Also holst du vom Scanner die Daten rein und schreibst sie per Robot raus.



Ich habe keine Ahnung wie du zu dieser Annahme kommst, denn es ist genau umgekehrt, aber eigentlich habe ich das doch längst beschrieben.

Also - der verd.... Barcodescanner verhält sich exakt wie eine Tastatur.
Nun soll aber, unabhängig davon wo der User hinklickt oder was für ein Fenster sich automatisch öffnet, der Input der vom Scanner kommt in meiner Applikation landen und das soll wenn irgendwie möglich ein "unsichtbares" Programm sein - ich meine damit eines ohne GUI.

Wenn du das auf irgend eine andere Art schaffst, dann sag mir *konkret* wie.
(Das währe ja dann sozusagen ein Keylistener und das hatten wir an anderer Stelle schon)

Ich frage gerne noch einmal:
Wer weiss wie man in einer anderen Sprache (Bevorzugt C++) einen Keylistener schreibt, der die eine Ereignisse zu einem Javaprogramm weiterleitet (als fertiger String z.B.) und alle anderen an des BS weiterschickt, kann sich gerne per PN melden. Das ist nämlich alleweil noch billiger als wenn ich meine verblassten C++ Kenntnisse auffrischen müsste aber konkrete Angebote gehören nicht hierher und da gleich einen Job draus zu machen halte ich für Overkill)


----------



## thE_29 (24. Okt 2011)

Du müsstest schaun ob du in C erkennen kannst, ob das nicht vom Standard Input Gerät kommt (Tastatur) und dann könntest du es via UDP/TCP an dein Java-Programm weiterschicken..

Die Frage ist halt, kann man es unterscheiden? 

Guck mal hier rein: http://www.java-forum.org/codeschnipsel-u-projekte/65318-globaler-java-key-logger-windows.html und frag The_S sonstmal..


----------



## Andi_CH (24. Okt 2011)

Also da hänge ich jetzt nicht auch noch an das letzte Post :



thE_29 hat gesagt.:


> Es gibt Barcodescanner die verhalten sich wie Tastaturen.. (kenne ich von der alten Firma)



Ich kenne bis jetzt keine anderen - um konkrete Hinweis welche das anders machen bitte ich ausdrücklich.



thE_29 hat gesagt.:


> Dh, wenn man einen Code scannt, wird der EAN Code einfach ausgegeben und zwar genau dort, wo der Fokus/Cursor steht..


... und genau das WILL ich nicht bzw.  kann es nicht brauchen.



thE_29 hat gesagt.:


> Das Problem hört sich eher danach an, dass der User nicht weiß was er tut.. Wenn ich ein Programm habe, was mit EAN-Codes umgehen kann und ich was scanne, dann hat das EAN-Programm auch offen zu sein..


Das Programm soll ein Hintergrundprozess sein - längst nicht alle Programme brauchen ein GUI.



thE_29 hat gesagt.:


> Irgendwann muss mal ein Schlussstrich gezogen werden um was sich ein Dev noch alles kümmern soll.. Soll Programm XYZ mit EAN was machen, so hat es offen zu sein und nicht zB der Browser oder sonstiges..



Irgenwann muss ein Schlussstrich mit Bevormundung gemacht werden - ich will das Zeugs nicht in einem GUI, denn das Programm hat wenn immer möglich gar kein GUI.

Frag doch erst einmal nach der Umgebung:

Da kommt der LKW-Fahrer und will die bereitstehende Ware mitnehmen.
Der Typ der die Waren übergibt, zieht sein Knarre und schiesst  - gleichzeitig werden von den installierten Cams Bilder genommen und vollautomatisch abgespeichert. Der PC steht wohl kaum im Warenausgang (da würde er nicht lange überleben) sonder vermutlich im Büro des Werkstattchefs.
Es müsste doch möglich sein, gleichzeitig noch etwas anderes auf demselben PC zu machen.

Meinst du der latscht erst ins Büro um nachzusehen ob deine "EAN Applikation" "offen" ist?
Da kennst du die Leute aber schlecht.


--


Wir sind gleichweit wie im anderen Thread - warum wollt ihr mein Problem ändern, nur weil ihr diese Art von Welt nicht kennt?


----------



## thE_29 (24. Okt 2011)

Scanner die nicht via USB angesteckt werden (also serielle) haben das glaube ich anders gehandhabt.. (also wie man die Daten abgreift)

Damit haben sich aber nur die C/C++ Devs in der alten Firma rumgeärgert.. Wir Java Devs bekamen immer nur die USB-Versionen..


Die Frage ist halt, ob man diese "alten" (=seriellen) Geräte noch herbekommt, bzw. ob die noch hergestellt werden..

Edit: Das mit der NICHT-GUI hast du aber auch erst jetzt gesagt.. Im ersten Post hast du noch was von einem modalen Dialog geschrieben  (was man ab Java 1.5 mit setAlwaysOntop auch erreichen könnte)


----------



## Andi_CH (24. Okt 2011)

thE_29 hat gesagt.:


> Du müsstest schaun ob du in C erkennen kannst, ob das nicht vom Standard Input Gerät kommt (Tastatur) und dann könntest du es via UDP/TCP an dein Java-Programm weiterschicken..
> 
> Die Frage ist halt, kann man es unterscheiden?
> 
> Guck mal hier rein: http://www.java-forum.org/codeschnipsel-u-projekte/65318-globaler-java-key-logger-windows.html und frag The_S sonstmal..



Im erwähnten Thread sehe ich "unsaubere Lösung" - "wo ist der C-Source-Code" - "Polling alle 5mS" --> möchtest du so etwas in deiner Software verwenden? Ich nicht.

Mit "Glaub", "schau mal" oder "du musst halt schauen" ist mir nicht geholfen - wer weiss KONKRET wie das geht - ich bin sicher nicht der erste Mensch der eine Lösung für so ein Problem braucht.


----------



## bERt0r (24. Okt 2011)

Konkret Funktioniert so ein globaler Keylistener so, dass ein C/C++ Programm über die winapi die KeyEvents abfängt und dann über JNI ans Java Programm weiterleitet.


----------



## thE_29 (24. Okt 2011)

Der C-Source ist doch im Src-Package von seiner HP zum Runterladen..

Und gerade mit einem Dev von der alten Firma geredet: Jo, diese seriellen Scanner haben die Daten via COM-Schnittstelle geschickt und diese wurden direkt dort abgefragt und damit weitergearbeitet..

Daher konnte mir der auch nichts sagen, ob das in C sauber abfragen geht.. (was von welcher Tastatur kommt)


IMHO müsste es in der WinApi da schon Funktionen geben (dann geht das Prog aber nicht unter Linux).

Am Besten da mal weitersuchen + C Testprogramm schreiben und schaun was für Flags, etc. der EAN-Scanner so schickt..

Nachtrag: Link vergessen..
ActivateKeyboardLayout function


----------



## SlaterB (24. Okt 2011)

alle Programmierung, ganz besonders in Java, ist am saubersten immer nur in der eigenen Sandbox mit ausreichend Speicher drumherum,
jede externe Interaktion, ob Einlesen aus Dateien, Tastatur, Maus, Netzwerk, Encodings, Focus, Minimierungszustand, Ausgabe in Text oder Grafik 
ist immer nur eine theoretisch funktionierende Sache, bestenfalls durch Sockets, IO und Swing standardisiert

dass der Barcodescanner die Daten als Tastatur und z.B. nicht über Socket anbietet ist schon dem selber anzumeckern,
dafür mindestens kann Java nichts,
wenn du ansonsten noch mit Virenscanner und sonstigen Problemen automatisch agieren willst, dann ist das weit weg aus der Java-Welt,
C++ usw. sind immer näher am Betriebssystem dran


----------



## Andi_CH (24. Okt 2011)

Aehm - was soll ich jetzt mit dieser Antwort anfangen? Oder ist die nicht am mich gerichtet?


----------



## bERt0r (24. Okt 2011)

Das bedeutet, das was du haben willst ist ein Globaler KeyHook / Keylogger und sowas ist in reinem Java einfach nicht möglich. Die JVM und das Betriebssystem laufen einfach auf zwei verschiedenen Ebenen, aber das weißt du sicher. Der einzige weg sowas zu realisieren ist, indem man die Plattformunabhängigkeit deines Javaprogramms aufgibt und eine Betriebssystemnähere Komponente hinzunimmt.
Es gibt einige beispiele von solchen Java-Keyloggern, es wollten schliesslich schon genug leute einen "Java Trojaner" programmieren. Die oben gepostete Methode über JNI ist meines Wissens nach die einzig sinnvolle dafür. Hab das ganze auch schonmal ausprobiert, läuft super.


----------



## Andi_CH (24. Okt 2011)

Eigentlich sollte ich langsam wissen, dass hier kaum jemand auf dem Laufenden ist, was im Thread schon alles geschrieben wurde :

JA ich weiss schon lange, dass der Weg über einen Keylogger mit Java alleine nicht möglich ist und suche ja auch schon eine ganze Weile nach *konkreter* Unterstützung ......
(oder eben nach Auswegen, aber die sehe ich nur als temporäre Lösung)

Der Keylogger könnte ja Plattformabhängig ausgetauscht werden - das ist das kleinste Problem, aber der Kunde ist eh ein Windoofs-only-customer. Die Kommunikation lässt sich sehr wohl unabhàngig gestalten ...

--

Véllig OT: Warum nur kommtt, seit ich heute Eclise gestartet habe ein é wenn ich auf die Taste mit dem ö drècke? Alle Umlaute sind mit und ohne Shift vertauscht???
Aber nur die drei Tasten è/ü, é/ö, à/ä - hat das auch schon jemand beobachtet (Ach Eclipse làuft im Moment gar nicht mehr...)


----------



## thE_29 (24. Okt 2011)

Du könntest aber auch einen Dialog modal machen und mit setAlwaysOnTop in den Vordergrund stellen und dort die Daten abgreifen..

Ist zwar auch nicht die schönste Art, aber sowas könnte auch klappen..

Ungefähr so:


```
final JDialog dlg = new JDialog((JFrame)null, "DIALOG", true);
		JTextField field = new JTextField();
		field.addFocusListener(new FocusListener(){

			@Override
			public void focusGained(FocusEvent e) {
				// TODO Auto-generated method stub
				
			}

			@Override
			public void focusLost(FocusEvent e) {
				dlg.toFront();
				
			}});
		field.addKeyListener(new KeyListener(){

			@Override
			public void keyPressed(KeyEvent e) {
				// TODO Auto-generated method stub
				
			}

			@Override
			public void keyReleased(KeyEvent e) {
				
				System.out.println(">> ZEICHEN: " + e.getKeyChar());
			}

			@Override
			public void keyTyped(KeyEvent e) {
				// TODO Auto-generated method stub
				
			}});
		dlg.setDefaultCloseOperation(JDialog.DISPOSE_ON_CLOSE);
		dlg.setAlwaysOnTop(true);
		dlg.setSize(300,300);
		dlg.add(field);
//		dlg.setLocation(-1024, -768);
		dlg.setLocationRelativeTo(null);
		dlg.addFocusListener(new FocusListener(){

			@Override
			public void focusGained(FocusEvent e) {
				// TODO Auto-generated method stub
			}

			@Override
			public void focusLost(FocusEvent e) {
				dlg.toFront();
				
			}});
		dlg.setVisible(true);
```

Setzt man die Position auf -1024,-768 (müsste man vorher rausrechnen ob mehrere Monitor da sind, etc), so sieht man nichtmal den Dialog, aber es wird auf die Eingabe reagiert..

Problem ist halt, man kann kein anderes Programm mehr fokusieren.. Bzw. geht es, wenn man oft genug woanders hinklickt...

Also auch nicht wirklich eine zufriedenstellende Lösung..


----------



## bERt0r (24. Okt 2011)

Andi_CH hat gesagt.:


> Eigentlich sollte ich langsam wissen, dass hier kaum jemand auf dem Laufenden ist, was im Thread schon alles geschrieben wurde :
> 
> JA ich weiss schon lange, dass der Weg über einen Keylogger mit Java alleine nicht möglich ist und suche ja auch schon eine ganze Weile nach *konkreter* Unterstützung ......
> (oder eben nach Auswegen, aber die sehe ich nur als temporäre Lösung)
> ...



Du hast in diesem Thread ein ganz anderes Problem beschrieben. Die ganze focus Geschichte ist doch nichts als eine (schlechte)Notlösung für deine eigentliche Anforderung. 
Ich leider nicht wo deine Probleme liegen. Dir wurden hier bereits konkrete Lösungen mit Sourcecode präsentiert. Noch viel konkreter gehts leider nicht mehr. Hier hast du noch einen Link, wo du gleich den ganzen Source code siehst:  Java – Global (low level) Keyboard / Mouse Hook – JNI kSquared.de – Blog

Bezüglich always on top: Das beeinflusst nur die Anzeige, der Focus kann noch immer auf andere Programme gelegt werden -> Die KeyEvents kommt nicht durch.


----------



## Andi_CH (25. Okt 2011)

Dass in Java kein Keylogger möglich ist weiss ich schon lange und die Frage nach einem, ich sag dem mal "C++ Plug in" kam auch letztes mal keine Antwort - und der einzige Vorschlag stellte sich schon nach 15 Sekunden lesen als unprofessionell, um nicht zu sagen untauglich, heraus.

Aber jetzt allgemeiner, auch wenn es etwas OT ist:

Schon bei der Frage "Suche nach Servern mit dynIP" wurde zur Hauptsache mit DynDNS argumentiert, obwohl von Anfang klar gewesen war, dass das nichts bringt (wenn ich die Server nicht kenne, kenne ich ja deren Name auch nicht) und ich habe von Anfang die Frage gestellt "wie finde ich Server".

Oder meine Fragen nach "best pratices" - die versandeten auch.

Ich kann mir einfach nicht vorstellen, dass hier keine Kenntnisse zu non-standard Problemen vorhanden sind. Wo ist der Forschergeist geblieben der Ingenieuren eigen sein sollte?
Ich suche hier nicht unbedingt konzeptionelle Hilfe, das habe ich im Griff. (Ist so, obwohl meine Erfahrung ja immer wieder mal in Frage gestellt wird) Ich suche konkrete Hinweise wie ich etwas in Java umsetzen kann. 

Aber freut euch: Bald kommen ja wieder die Fragen "Wie zeichne ich einen Tannenbaum" - offensichtlich sind die spannender 

(Nö bitte nicht ärgern - das Letzte hätte Humor sein sollen  )


----------



## SlaterB (25. Okt 2011)

da du jetzt schon zwei Beleidigungen an alle anderen in dieses Thema geschrieben hast
(erst: keiner liest den Thread/ nun: keiner kann mehr als Tannenbaum malen, auch wenn das ein Scherz war, der Rest klingt genauso)
kann ich mir ja nun auch eine erlauben: du hast weder von Java eine Ahnung, noch wie du in diesem Thread schreibst von C++??
auch sonst zu Windows-Betriebssystem keinen eigenen Forschungsgeist,
was bleibt denn dann noch für >10 Jahre Erfahrung, nur Inselsprachen wie Ada ohne sonstige Bedeutung?

ich habe gewiss zum letzten Mal in einem deiner Threads mit Hilfe angefangen wie im dritten Post,
ja, ich weiß, dass sie (hier) für dich nichts wert war, hast du ausreichend mitgeteilt..


----------



## bERt0r (25. Okt 2011)

Wenn du so ignorant und überheblich bist, dass du Vorschläge, die dir von mehreren Benutzern (und wohl auch schon in mehreren Threads) gemacht wurden, nach 15 Sekunden lesen als unprofessionell einstufst kann man dir leider nicht helfen. Die ganze 5ms polling sache is blödsinn und keylogging ist auch so eine einfache Geschichte, da wirst du kein Paper oder sonstiges dazu finden. Nachdem du ja ein c++ guru bist, solltest du eigentlich wissen wie ein Hook funktioniert, wenn nicht lern es.


----------



## Andi_CH (26. Okt 2011)

SlaterB hat gesagt.:


> da du jetzt schon zwei Beleidigungen an alle anderen in dieses Thema geschrieben hast
> (erst: keiner liest den Thread/ nun: keiner kann mehr als Tannenbaum malen, auch wenn das ein Scherz war, der Rest klingt genauso)



Beleidigungen? hm - wenn das so rüberkam Sorry.

Dass anstatt Lösungsvorschläge Änderungsvorschläge kommen ist eine Tatsache die sich nicht leugnen lässt.
Dass meine Fragen nicht genau gelesen werden ist auch eine Tatsache: Thema wie finde ich Server - Vorschlag dynDNS - Aehm - damit finde ich keine Server, damit finde ich IP Nummern wenn ich den Servernamen kenne ...

Ich habe NICHT gesagt, dass niemand einen Tannenbaum zeichnen kann, ich habe nur gesagt, dass auf diese Art von Themen immer sehr schnell Antworten können - sich also ganz offentsichtlich die Meisten hier auf diese Art von Fragen freuen.

Was man nach 15 Sekunden als unprofessionell abtun kann ist der Keylogger auf den verwiesen wurde - 5mS polling ... na ja.

Und deine Hilfe habe ich nicht runtergemacht - ich habe nur gesagt, dass es zweite Wahl ist, einem Prozess der eigentlich im Hintergrund laufen soll ein GUI zu verpassen um Input abzufangen.

Aber hier wird wohl kaum mehr etwas Produktives kommen ...


----------



## Gast2 (26. Okt 2011)

Ich habe bislang nur lesend dieses Thema verfolgt und muss dem TO Leider sagen: 

Das ist sehr wohl beleidigend wie du mit der angebotenen Hilfe umgehst. 

PS: Der Titel des Threads bezieht sich darauf wie man eine GUI Modal setzt oder permanent in den Vordergrund. Du hättest vielleicht auch ein neues Thema eröffnen können wenn das nicht mehr ist was du möchtest. 

PPS: Die Tiraden die jetzt wahrscheinlich von dem TO als Rechtfertigung kommen werde ich nicht kommentieren.


----------



## jgh (26. Okt 2011)

btt (dem ursprünglichen)...obwohl ich jetzt hier meine Antwort poste, wird jedes Keyevent durch den GlobalenKeyLogger mit auf der Konsole von eclipse mitgeloggt. Jeder Mausklick, jede Korrektur.
Keine Ahnung ob das etwas für deinen Scanner ist, aber einen Versuch ist es Wert, zumal imho die Webseite das verspricht, wovon ich denke das du es bräuchtest. 

Deshalb gibt es in Java auch keinen KeyListener/KeyLogger der alle Tastatureingaben systemweit mitschneidet, auch wenn Ihre Anwendung nicht den Fokus besitzt.

Dieses "Problem" kann auf Windowssystemen mit dem Java Global Key Logger umgangen werden. Über eine native Bibliothek werden die Tastatureingaben mitgeschnitten und an eine Java Schnittstelle weitergeleitet. Von dort aus können Sie die Eingaben weiterverarbeiten.

Hier der Bsp-Code:


```
import java.io.File;

import de.stkiese.dflt.GermanKeyboardConverter;
import de.stkiese.events.GlobalKeyEvent;
import de.stkiese.interfaces.GlobalKeyListener;
import de.stkiese.logger.GlobalKeyLogger;

/**
 * Example how to use the Java Global KeyLogger. First you have to load the
 * GlobalKeyLogger.dll. E. g.:
 * 
 * <pre>
 * <code>static {
 *    try {
 *      System.loadLibrary("GlobalKeyLogger");
 *    }
 *    catch (UnsatisfiedLinkError ule) {
 *      System.load(".\\lib\\GlobalKeyLogger.dll");
 *    }
 * }</code>
 * </pre>
 * 
 * Then you have to create a new {@link de.stkiese.logger.GlobalKeyLogger}, add
 * a {@link de.stkiese.interfaces.GlobalKeyListener}, set a
 * {@link de.stkiese.interfaces.KeyboardConverter} e. g.
 * {@link de.stkiese.dflt.DefaultKeyboardConverter},
 * {@link de.stkiese.dflt.GermanKeyboardConverter} or an own implementation.
 * After a {@link de.stkiese.logger.GlobalKeyLogger#startListening()} call, your
 * Listener will receive events.
 * 
 * @author Stefan Kiesel
 */
public class Example {

	static {
		try {
			System.loadLibrary("GlobalKeyLogger");
		} catch (UnsatisfiedLinkError ule) {
			System.load(new File("./GlobalKeyLogger.dll").getAbsolutePath());
		}
	}

	public static void main(String[] args) {

		GlobalKeyLogger gkl = new GlobalKeyLogger();
		gkl.addGlobalKeyListener(new GlobalKeyListener() {

			public void keyPressed(GlobalKeyEvent gke) {
				System.out.print(gke.getConverted());
			}

		});
		gkl.setConverter(new GermanKeyboardConverter());
		gkl.startListening();
	}
}
```

und die benötigten Anhänge:
PS: die dll in die Root des Projektes, oder Zeile 39 entsprechend ändern.


----------



## bERt0r (26. Okt 2011)

Und ich bereits sagte, dein 5ms Polling argument ist blödsinn, ich habe keine Ahnung wie du auf sowas kommst.
PS: Egal von wie viel Erfahrung du hier schreibst, dein Umgangston und die Art von "Problemen" bei denen du hier Hilfe suchst entsprechen eher einem SkriptKiddy das will, dass wir ihm einen Trojaner schreiben als einem Erwachsenen Programmierer. (KeyLogging, ScreenCapture, "Server" finden ohne dass man weder IP, noch Name, noch sonstwas weis und nichtmal einen Statischen Server aufsetzen kann...)
Das soll jetzt gar nicht beleidigend sein, es sei denn es trifft zu, aber das ist einfach das Bild von dir das du über dieses Forum kommunizierst.


----------

