【问题标题】:How i can make a console application which implements KeyListener?我如何制作一个实现 KeyListener 的控制台应用程序?
【发布时间】:2012-06-08 15:27:08
【问题描述】:

我正在尝试创建一个简单的 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。 我怎样才能做到这一点? 提前致谢。

【问题讨论】:

    标签: java keylistener


    【解决方案1】:

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

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

    【讨论】:

    • 如果我使用扫描程序类来读取输入,它是否会仅在我的控制台窗口处于活动状态时存储按下的键。如果打开浏览器并键入 URL,它是否会将 URL 键也存储在文件中?
    • 没有。听起来您在寻找key loggerkey catcher。这是一个针对 Linux 的项目:sourceforge.net/projects/jxgrabkey,这是一个针对 Windows 的项目:melloware.com/products/jintellitype/index.html
    • +1 嘿。感谢您理解我的问题。我想在 Windows 上使用它。你能指导我一下吗? JINTELLITYPE 是 JAVA 的 API 吗?
    • @vikiiii,是的,就像大多数其他名为 JSomething 的库一样 :-)
    【解决方案2】:

    你可以试试开源框架,jLinejLine

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

    【讨论】:

    • 酷库。感谢您的链接。
    【解决方案3】:

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

    JNA Keyboard Hook in Windows

    Working example of JNA mouse hook

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-01-30
      • 1970-01-01
      相关资源
      最近更新 更多