2013-07-30 97 views

回答

-1

Java在JVM中運行的唯一目的是爲了安全起見,防止出現這種情況。這就是爲什麼您需要C/C++來編寫密鑰記錄器,因爲Java無法到達JVM外部。

如果你想記錄從您的應用程序鍵:

瞭解更多關於KeyListeners(javadoc

而且有關文件寫入(example

可能重複的Listening for input without focus in Java

+0

用KeyListeners你不能聽「系統」 – BackSlash

+0

老闆,我知道如何寫入文件。並且還了解KeyListener。我需要基本的想法是否可能。通過使用JNI,這可能是 – newuser

1

沒有,你不能在java程序之外捕獲keyevents。

如果你想這樣做,你將不得不通過C/C++庫使用OS鉤子。

如果你真的想在Java中使用它,你仍然可以包裝的C代碼與JNI ...

這裏是一個blog解釋如何做到這一點在Windows上。

正如我們記得,Java允許捕捉鍵盤事件的鍵或組合鍵,但是這隻有當Java應用程序框架或控制檯處於活動狀態在這一刻,但如果用戶打開或選擇antoher窗口,鍵盤事件不會到達我們的Java應用程序。每個應用程序都有自己的事件(消息)隊列,除非應用程序窗口(控制檯)處於活動狀態,否則鍵盤事件將被髮送到此隊列中。

+0

嗎? – newuser

+0

當然。 JNI只包裝一個C庫,併爲您提供一些Java接口來訪問它。所以幾乎所有可能的C都可以通過JNI來實現。 –

1

是這樣的?

  Scanner sc=new Scanner(System.in); 
      String s=sc.nextLine(); 
      FileWriter fw = new FileWriter("/file.txt"); 
      BufferedWriter bw = new BufferedWriter(fw); 
      bw.write(s); 
      bw.flush(); 
      bw.close();