2013-07-30 72 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();