Java – 调用屏幕键盘

我正在处理的应用程序将在Windows 7上运行。它将用于通过触摸屏输入一些信息。 每当提示用户提供信息时,我都需要弹出一个屏幕键盘。 我的问题是,我应该从头开始创建键盘类,还是应该使用Windows 7内置的屏幕键盘?如何在Java应用程序中调用它? 谢谢

我刚刚玩屏幕键盘,看到它很容易。 您只需使用Runtime.exec()ProcessBuilder调用它。 然后,如果您的应用程序失去焦点,请将其恢复为应用程序,而活动元素必须是当前可编辑元素(文本字段,文本区域等)。 现在,当用户在虚拟键盘上键入时,字符正在写入您的应用程序。

编辑

从java执行osk.exe有一些困难。 它抛出IOException: java.io.IOException: Cannot run program "C:\Windows\System32\osk.exe": CreateProcess error=740, The requested operation requires elevation

诀窍是通过命令shell( cmd )运行命令:

Runtime.getRuntime().exec("cmd /c C:\\Windows\\System32\\osk.exe");

这条线在我的机器上工作正常。

我刚遇到同样的问题,另外我在64位Win7上运行32位应用程序。 (实际上我使用的是Matlab,它基于Java)我都使用java命令Runtime.getRuntime().exec(....)和Matlab system(....) 。 行为是相同的:无法启动屏幕键盘。 我无法在谷歌上找到任何有用的解决方案,所以我尝试将两个想法联系起来并升级上面的答案:

我的解决方案是从重新指令文件夹sysnative显式启动64位cmd(这对osk.exe是不可能的,这会导致未找到或权限错误)

Runtime.getRuntime().exec('C:\windows\sysnative\cmd /c C:\Windows\system32\osk.exe');

我希望这有帮助。