2012-09-24 25 views
0

我需要創建一個程序,在每次按鍵時觸發事件(如鍵盤記錄器)。我無法獲得關鍵價值。這個程序將會在每個按鍵上按下它的火災事件。我在網上沒有發現任何與此相關的事情。如何獲得關鍵的衝擊/新聞價值?

+0

它是一個關鍵記錄器還是它實際上是一個關鍵記錄器?當你說這個節目「將在每個按鍵後面運行......」時,它聽起來就像是一個關鍵的記錄器。如果它不同,你能解釋它將如何工作嗎? – user1201210

+0

將'java.awt.event.KeyListener'添加到您希望跟蹤按鍵的任何Component中。如果您試圖創建一個OS範圍的關鍵偵聽器,那麼您將需要使用本地庫,例如JNI。 – Vulcan

+0

@Dynguss是的,你可以說它實際上是一個關鍵記錄器。但它的作用稍有不同,它保留了每個盒子的記錄,而不是寄給你。 –

回答

0

很奇怪你找不到任何東西。 您應該使用KeyListener來記錄關鍵事件。如果只有一個事件(例如,keyUP,keyDown或keyPress)是相關的,請改用KeyAdapter

問題是,鍵監聽器可以附加到任何Java屏幕元素,並捕獲僅派發到此元素的事件。例如,您可以創建Frame並向其添加關鍵偵聽器,並使用此幀捕獲所有關鍵事件。

您無法捕獲Java應用程序之外的關鍵事件。

如果您仍想這樣做,您可以使用以下解決方法。創建透明窗口併爲其添加監聽器。聽衆應該捕捉事件,記錄它們,然後使用java.awt.Robot在屏幕上的相同位置模仿它們。

,這個節點將幫助您創建透明窗口:http://docs.oracle.com/javase/tutorial/uiswing/misc/trans_shaped_windows.html

另一種方式是直接或間接使用JNI/JNA。例如xdotools可以幫助你。