2016-11-21 5 views
1

Я хочу автоматически помещать содержимое в текстовое поле, когда текст в блокноте копируется через Ctrl + C. Мне интересно, как слушать Ключи блокнота. Можно ли прослушивать клавиши «Блокнот» или любую другую программу?Keylistener для Ctrl + C из другой программы

+2

Слушайте в буфер обмена вместо. http://stackoverflow.com/q/14226064/2855515 – brian

+0

Возможно прослушивание 'Ctrl + C' по всему миру. Он называется кейлоггером, и в вашем java-приложении определенно ничего не нужно реализовать. Как уже отмечал @brian, лучшим подходом является прослушивание системного буфера обмена. – Paul

ответ

2

Вот версия 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); 
    } 
} 
0

Нет, невозможно получить все ключевые события всего приложения в java.

У вас есть 2 возможных решения.

  1. Вы получаете только изменения в буфере обмена с помощью буфера обмена-слушателя. SO example

  2. Использование ЮНА, JNI, jintellitype, ... слушать системообразующий keyevents SO example

0

Это возможно, но очень плохая практика кодирования. Если вы все еще хотите это сделать: https://github.com/kwhat/jnativehook.
Лучшей идеей было бы следить за изменениями в буфере обмена.