2013-03-26 3 views
6

zugreifen Ich habe eine industrielle Touchscreen-Tablet-Gerät mit Windows7 (diese one). Es hat einen integrierten RFID/Barcode Scanner und Kamera. Beide können über einen Hardware-Button gestartet werden. Ich würde gerne erkennen, wenn eine dieser Tasten gedrückt wird. Ich habe eine kleine Test-App mit einem GlobalKeyEventListener geschrieben, aber wenn eine dieser Schaltflächen gedrückt wird, wird kein Ereignis ausgelöst. Alle normalen Tastaturereignisse werden ausgelöst. Weiß jemand, ob und wie auf diese Art von Schaltflächenereignissen in Java zugegriffen werden kann? Was sollte ich noch versuchen, bevor ich dem Kunden sage, dass es nicht möglich ist. Danke.Wie kann ich eine Hardware-Taste in Java

+0

Wenn das Ereignis nicht ausgelöst wird, wenn Sie diese bestimmte Taste drücken und wenn Sie die normale Tastaturtaste drücken, wird der Hardwareschlüssel nicht als virtueller Schlüssel registriert. Mein Vorschlag wäre, einen Ereignis-Listener zu haben, der auf die Eigenschaft schaut, die Hardware-Taste ändert, und sobald es sich ändert, können Sie darauf handeln. –

Antwort

1

Es wird eine Programmierschnittstelle für das Abhören dieser Tasten geben, und es ist unwahrscheinlich, dass eine Verbindung zu einer Java Virtual Machine besteht. Ich würde ein Programm/Service/was auch immer für diese Taste hören würde schreiben schiebt, dass ich in eine Windows-DLL kompilieren könnte, und dann würde ich die DLL aus dem Java-Programm aufrufen. Windows-DLLs können auf Dinge warten, und Java-Klassen können sich selbst als Listener für Ereignisse aus den DLLs registrieren. Es ist wahrscheinlich nicht trivial, der schwierigste Teil für mich wäre das DLL-Programm selbst (kein Java dort, C oder C# oder etwas, das Microsoft mag), gefolgt von der Java Native Interface oder API oder was auch immer, um die DLL zu nennen.

Wenn Sie so weit kommen, empfehle ich ein Produkt, dessen Name ich nicht erinnere; Es erlaubt Ihnen, DLLs aufzurufen, ohne irgendeinen JNI-Code zu verwenden, d. h. früher mussten Sie C-Code mit einem sehr spezifischen Satz von Regeln schreiben, um Java aufzurufen, und dieses andere Produkt eliminiert das vollständig.

Viel Glück.

+0

Werfen Sie auch einen Blick auf JNA. – Puce

+0

Hängt davon ab, was der Knopf tut. Ich habe ein ähnliches Problem mit einer ziemlich trivialen Lösung gemeistert. In meinem Fall war es entweder C/ASM oder ständig nach Eigentumsänderung suchen. In meinem Fall konnte ich meine Anwendung als Teil eines Hintergrundprozesses ausführen, um ständig auf Änderungen der Eigenschaften in der Registrierung zu warten. Dies würde jedes Mal auftreten, wenn die Taste gedrückt wurde, während sich die Eigenschaft änderte, konnte ich darauf reagieren. –

Verwandte Themen