【问题标题】:Reading a string from a selected text from any software in Windows/MacOS从 Windows/MacOS 中任何软件的选定文本中读取字符串
【发布时间】:2020-04-16 10:21:06
【问题描述】:

第一件事是第一件事。我对这一切 stackoverflow 有点陌生,所以请原谅我的格式。

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

我的问题要容易得多.. 我希望我的程序使用一个键读取我将在任何软件中用光标选择的文本(只要它是可选的)(我将提供一张照片以便更好地理解)在我的键盘上绑定...例如 '`' 或 Caps Lock 键。

MS Word 中选定文本的示例:

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

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();
}

有什么想法吗?

附:程序只有在按下绑定键时才能读取它。

【问题讨论】:

    标签: java text background selection text-cursor


    【解决方案1】:

    鉴于您的程序在捕获所选文本时将没有输入焦点,我认为 Java 无法在不诉诸操作系统本机函数的情况下做到这一点。因此,您需要求助于JNI(Java 本机接口)或JNA(Java 本机访问),并且调用的共享库将依赖于操作系统。

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

    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);
    }
    

    Here 是一个关于如何使用 JNI 的教程。

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-01-15
      • 1970-01-01
      • 1970-01-01
      • 2015-05-09
      • 1970-01-01
      • 2016-07-01
      • 2019-05-23
      相关资源
      最近更新 更多