4

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

4

2 回答 2

10

我刚刚玩过屏幕键盘,发现它很容易。您只需要使用Runtime.exec()or调用它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");

这条线在我的机器上运行良好。

于 2012-02-14T17:49:31.950 回答
3

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

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

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

我希望这有帮助。

于 2014-03-17T16:08:51.343 回答