【发布时间】:2012-01-09 21:11:06
【问题描述】:
我需要从我的应用程序中打开 Windows 的虚拟键盘,它将使用 Eclipse RCP 在 windows 32 位平台(即 win32 JRE)上部署。
根据open the Windows virtual keyboard in a Java program 帖子的答案,应用程序在 32 位 Windows 操作系统上正确运行,但拒绝在 64 位 Windows 操作系统上运行。
我使用的解决方案如下:
// String sysroot = System.getenv("SystemRoot"); //$NON-NLS-1$
// Runtime.getRuntime().exec("cmd.exe /c "+sysroot + "\\system32\\osk.exe /n"); //$NON-NLS-1$ //$NON-NLS-2$
Runtime.getRuntime().exec("osk");
有没有办法在不使用 64 位部署的情况下解决这个问题? (我无法创建,只要我使用的库不支持此环境)。
谢谢
【问题讨论】:
-
如果您的 Java 应用程序是使用 32 位模式 JVM 在 32 位模式下编译/运行的,则您无法运行调用 64 位版本可执行文件的进程。比方说,Windows XP 32 位,因此它的 OSK.EXE 版本是 32 位;那么您的 Java 应用程序可以执行该过程,因为它使用 32 位模式 JVM 匹配。现在,假设 Windows 7 64 位,因此它的 OSK.exe 版本是 64 位,但是您的 Java 应用程序是使用 32 位模式 JVM 在 32 位模式下编译/运行的,那么您的应用程序将不会像它一样运行该进程不匹配。 see link
-
感谢您的帮助。 ,这就是我的假设。如果我找到解决方法,我会将其发布在此帖子中
-
这完全是 hack,但是如果您编写一个只调用可执行文件的小型本机包装器,并将该包装器设为 32 位呢?然后,您可以从您的 Java 代码执行包装器。包装器可以像 C/C++ 中的
system("osk");一样简单。 -
我会尝试使用 .bat 文件来使用它,只是为了避免依赖 java - c++ 首先,但我会尝试按照你说的做。谢谢
-
调用一个bat文件可能是个好主意,有兴趣了解
标签: java command 32bit-64bit on-screen-keyboard