-1

我正在尝试创建一个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());
              }
    }

}

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

4

3 回答 3

2

对于基于行的输入,即“用户输入文本,用户按下回车,您的程序接收用户输入的内容”Scanner该类应该可以正常工作。

对于单个字符输入,例如“用户按下 x 键,您的程序会收到通知”。您必须查看诸如CHARVAJava Curses之类的库。

于 2012-06-07T09:07:45.890 回答
1

您可以尝试一个开源框架,jLinejLine

但这不是 100% java。还有一些本地实现。

于 2012-06-07T09:13:30.417 回答
0

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

Windows 中的 JNA 键盘挂钩

JNA 鼠标钩子的工作示例

于 2012-06-07T19:26:58.143 回答