java/c++如何获取windows平台上的全局键盘焦点

我想实现一个输入法,那么我必须获取到屏幕上获取到焦点的控件,并且获取到光标的位置。光标的坐标位置用来显示输入法的选项窗口。其次是我如何获取到键盘到控件之间的数据流。因为我要获取键盘按下的字母数据,再根据算法转换成中文,然后再写到控件里去。这样就实现了输入法的一个过程。就这个过程我找了很久也没找到如何实现。 我是搞java的,在java里面的api中我没找得到。如果有懂的请指点,如果是c++才能实现,或需要外调,也希望指点一二。

获取键盘按下的字母,OnKeyLstener

获取到屏幕上获取到焦点 getCursor

首先 很遗憾的告诉你,java 原生不支持获取窗口句柄 鼠标位置 监听按键 等。需要借助 jni 来调用 C 语言完成。 输入法使用java 来实现一定是非常糟糕的。
IME (Input Method Editor) 输入法是正规路线。想用java 那应该就是浮窗了。 问题在于 触发调用的时候。 通过C 语言可以实现 获取当前 焦点的窗口。也可以获取鼠标的位置,也可以通过 按键钩子 来获取键盘上每一个按键事件。 但是你不知何时调用。

GetGUIThreadInfo