来自另一个程序的 Ctrl+C 键监听器

Keylistener for Ctrl+C from another program

我想在通过Ctrl+C复制记事本中的文本时自动将内容放入文本区域。我想知道如何听记事本的键。是否可以听记事本或任何其他程序的键?

不,不可能获取 java 中所有应用程序的所有按键事件。

所以你有 2 个可能的解决方案。

  1. 你只能通过剪贴板监听器获取剪贴板的变化。 SO example

  2. 使用JNA, JNI, jintellitype, ...来监听系统按键事件SO example

这是可能的,但这是一种非常糟糕的编码习惯。如果您还想这样做:https://github.com/kwhat/jnativehook.
一个更好的主意是观察剪贴板中的变化。

这是其他答案和评论中引用的剪贴板侦听器的 JavaFX 版本:

import javafx.animation.AnimationTimer;
import javafx.application.Application;
import javafx.scene.Scene;
import javafx.scene.control.TextArea;
import javafx.scene.input.Clipboard;
import javafx.stage.Stage;

public class SystemClipboardWatcher extends Application {

    @Override
    public void start(Stage primaryStage) {
        TextArea clipboardView = new TextArea();

        AnimationTimer timer = new AnimationTimer() {

            Clipboard systemClipboard = Clipboard.getSystemClipboard();

            @Override
            public void handle(long timestamp) {
                String content = systemClipboard.getString();
                // do anything you need with this, e.g.:
                clipboardView.setText(content);
            }
        };

        timer.start();

        primaryStage.setScene(new Scene(clipboardView, 600, 600));
        primaryStage.show();
    }

    public static void main(String[] args) {
        launch(args);
    }
}