Откройте экранную клавиатуру (64-разрядная версия Windows 7) через приложение Java. Двойной щелчок.

В моем приложении Java есть следующий фрагмент кода:

boolean is64 = System.getProperty("os.arch").contains("64");
String oskPath = is64 ? "/SysWOW64/osk.exe" :"/system32/osk.exe";

Desktop desktop = null;
if (Desktop.isDesktopSupported()) {
    desktop = Desktop.getDesktop();
}
String sysroot = System.getenv("SystemRoot");
try {
    System.out.println("SysArch "+System.getProperty("os.arch")+ " " +is64);
    desktop.open(new File(sysroot + oskPath));

которая называется экранной клавиатурой Windows. Когда я запускаю .jar на 64-битной Windows, это нормально, но не работает, когда я запускаю .exe. Я пробовал это:

Runtime.getRuntime().exec("cmd /c " + sysroot + oskPath);

и это:

Runtime.getRuntime().exec("osk");

но случилось то же самое. Я создал .exe с launch4j, и я попытался преобразовать .bat (который запускает .jar) в .exe, но ничего не произошло .. Может кто-нибудь поможет? Заранее спасибо.


person Ive Andresson    schedule 08.09.2015    source источник
comment
Обратите внимание, что os.arch возвращает не архитектуру Windows, а JRE. См. Этот ответ: stackoverflow.com/a/2110847   -  person Tunaki    schedule 08.09.2015
comment
что произойдет, если вы захватите вывод? что ты видишь?   -  person Tschallacka    schedule 08.09.2015
comment
См. Также Когда Runtime.exec () не будет множества полезных советов по правильному созданию и управлению процессом. Затем игнорируйте, что это относится к exec, и используйте ProcessBuilder для создания процесса.   -  person Andrew Thompson    schedule 08.09.2015