Java:如何在后台记录击键?

标签 java background jframe counter daemon

所以我目前正在编写一个程序来计算我按下的特定键。尽管我希望程序完全在后台运行(没有打开的窗口或任务栏中的标志),但计数工作正常。

那么Java中有没有办法让一个进程完全在后台运行呢?我目前正在使用 JFrame 进行计数。

最佳答案

您可以使用 JNativeHook 这里是一个打印每个键和按下的键数的示例,您可以根据您的需要修改它:-

import org.jnativehook.GlobalScreen;
import org.jnativehook.keyboard.NativeKeyEvent;
import org.jnativehook.keyboard.NativeKeyListener;

public class Main implements NativeKeyListener
{
   public static void main(String[] args)
   {
    try
    {
      GlobalScreen.registerNativeHook();
    }
    catch(Exception e)
    {
      e.printStackTrace();
    }

    GlobalScreen.getInstance().addNativeKeyListener(new Main());
  }

  private int count;
  @Override
  public void nativeKeyPressed(NativeKeyEvent e)
  {
      System.out.println("Pressed "  + NativeKeyEvent.getKeyText(e.getKeyCode()));
      count++;
      System.out.println(count);
  }

  @Override
  public void nativeKeyReleased(NativeKeyEvent e)
  {

  }

  @Override
  public void nativeKeyTyped(NativeKeyEvent e)
  {

  }
}

如果您不知道如何导入 JNativeHook 库,那么 How to install JNativeHook Library?

关于Java:如何在后台记录击键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36662855/

相关文章:

java - Install4J 注册自定义 URI Mac

html - 背景覆盖固定

java - 将值从类传递到 JFrame

ios - 使用 swift 代码关闭后台模式

css - 全屏背景视频

java - 鼠标点击画圆的问题

Java:为 JFrame 及其组件添加 KeyListener

java - 实际上没有插入到 MySQL 中,但是自动增量字段在增加?

java - 哪一层最适合 Java DTO 的映射器、服务层还是 Controller 层?

java - java中多线程如何获取和释放同步方法和同步块(synchronized block)中的锁?