我如何制作一个实现KeyListener的控制台应用程序?

时间:2012-06-07 09:03:31

标签: java keylistener

我正在尝试创建一个实现Java的简单KeyListener程序。

我想继续运行我的程序,直到我中止它或在某种情况下。 我想要做的是在我运行程序后,无论我按下什么键,它都会存储在out.txt文件中。

public class StoreInFile implements KeyListener{
    public static void main(String[] args) {
    while(true){
    // **What should i do here such that it will call the keypressed event**.
    }
    }
    @Override
    public void keyPressed(KeyEvent e) {
        try{
              FileWriter fstream = new FileWriter("d:\\out.txt",true);
              BufferedWriter out = new BufferedWriter(fstream);
              out.write(e.getKeyChar());
              out.close();
              }catch (Exception ex){
              System.err.println("Error: " + ex.getMessage());
              }
    }

}

是否可以在控制台应用程序中实现? 基本上我想创建一个 KeyLogger KeyCatcher 。 我怎么能做到这一点? 提前谢谢。

3 个答案:

答案 0 :(得分:2)

对于基于行的输入,即“用户键入文本,用户按Enter键,您的程序会收到用户输入的内容”Scanner类应该可以正常运行。

对于单字符输入,例如“用户按下x键,您的程序会收到通知。”您必须查看CHARVA或{{3}等库。 }}

答案 1 :(得分:1)

您可以尝试使用开源框架jLinejLine

但这不是100%java.Some本地实现也在那里。

答案 2 :(得分:0)

如果您在Windows上运行,我会建议JNA,并编写keyhook和/或mousehook来监控键/鼠标事件。当控制台窗口处于非活动状态时,它仍然有效。

JNA Keyboard Hook in Windows

Working example of JNA mouse hook