Java 从Windows/MacOS中任何软件的选定文本中读取字符串

Java 从Windows/MacOS中任何软件的选定文本中读取字符串,java,text,background,selection,text-cursor,Java,Text,Background,Selection,Text Cursor,第一件事是第一件事。。我是一个新手,所以请原谅我的格式设置 你们都听说过punto switcher,对吧? 如果不是,它是一个在后台运行的软件,只有当它发现你正在用你喜欢的语言输入,但键盘布局不同时才会激活,并立即改变它 我的问题简单多了。。我想让我的程序通过键盘上的键绑定来读取我将在任何软件中用光标选择的文本(只要它是可选择的)(我将提供一张照片以便更好地理解)。。。例如“`”或大写锁定键 MS Word中选定文本的示例: 这里还有一段代码,让您更好地理解我的想法。(用java编写) 有什

第一件事是第一件事。。我是一个新手,所以请原谅我的格式设置

你们都听说过punto switcher,对吧? 如果不是,它是一个在后台运行的软件,只有当它发现你正在用你喜欢的语言输入,但键盘布局不同时才会激活,并立即改变它

我的问题简单多了。。我想让我的程序通过键盘上的键绑定来读取我将在任何软件中用光标选择的文本(只要它是可选择的)(我将提供一张照片以便更好地理解)。。。例如“`”或大写锁定键

MS Word中选定文本的示例:

这里还有一段代码,让您更好地理解我的想法。(用java编写)

有什么想法吗


另外,程序应该只在按下bind键时读取它。

我认为Java不借助OS本机函数就无法做到这一点,因为您的程序在捕获所选文本时不会有输入焦点。因此,您需要求助于(Java本机接口)或(Java本机访问),调用的共享库将依赖于操作系统

使用JNI,在用C/C++编写库以捕获所选文本后,Java代码如下所示(注意
native
关键字):

是关于如何使用JNI的教程

编辑: 关于如何捕获所选文本,我会尝试:

  • bind
    键上设置一个钩子,以便在按下该键时调用您的函数
  • 使用OS API将所选文本复制到剪贴板,然后从剪贴板复制到程序

  • 我不认为Java能够在不使用OS本机函数的情况下做到这一点,因为您的程序在捕获所选文本时不会有输入焦点。因此,您需要求助于(Java本机接口)或(Java本机访问),调用的共享库将依赖于操作系统

    使用JNI,在用C/C++编写库以捕获所选文本后,Java代码如下所示(注意
    native
    关键字):

    是关于如何使用JNI的教程

    编辑: 关于如何捕获所选文本,我会尝试:

  • bind
    键上设置一个钩子,以便在按下该键时调用您的函数
  • 使用OS API将所选文本复制到剪贴板,然后从剪贴板复制到程序
  • public string function_that_reads_a_selected_string_from_cursor(){
    variable_type bind = caps_lock
    String read_string
    //algorithm code
    return read_string;
    }
    
    public static void main(String[] args){
    String input = null;
    input = function_that_reads_a_selected_string_from_cursor();
    }
    
    public native String function_that_reads_a_selected_string_from_cursor(int key_code);
    
    public static void main(String[] args){
      int bind = VK_CAPITAL; // OS-dependent.
      String input = null;
      input = function_that_reads_a_selected_string_from_cursor(bind);
    }