2

アプリケーションから Windows の仮想キーボードを開く必要があります。これは、Windows 32 ビット プラットフォーム (つまり、win32 JRE) で Eclipse RCP を使用して展開されます。

Java プログラムで Windows 仮想キーボードを開く投稿への回答に従って、アプリケーションは 32 ビット Windows OS では正しく動作しますが、64 ビット Windows OS では動作しません。

私が使用しているソリューションは次のとおりです。

//          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 ビット展開を使用せずにこれを修正する方法はありますか? (この環境をサポートしていないライブラリを使用している限り、作成できません)。

ありがとう

4

3 に答える 3

0

このコードを試してください。それがうまくいくかどうかわからない。しかし、試してみる価値があります。

Desktop desktop = null;
if (Desktop.isDesktopSupported()) 
{
    desktop = Desktop.getDesktop();
}
String sysroot = System.getenv("SystemRoot");
desktop.open(new File(sysroot+"/system32/osk.exe"));

私はこのデスクトップクラスに慣れていないので、クラスがうまくいくかどうか知りたいです;)

于 2011-12-14T11:19:00.667 に答える
0

いいえ。32 ビット Java アプリや 32 ビット OS から 64 ビット ライブラリを使用することはできません。アプリ x64 をデプロイする必要があります。

于 2011-12-16T18:58:48.787 に答える
0

これは私の回避策です:

FileOutputStream fileOutputStream = new FileOutputStream(new File("C:/TEMP/RUN.BAT"));

        String file = "START C:/Windows/System32/osk.exe" + '\n'
                + "EXIT";
        fileOutputStream.write(file.getBytes());
        fileOutputStream.close();
        Runtime.getRuntime().exec("CMD /C START C:/TEMP/RUN.bat");
        Runtime.getRuntime().exec("CMD /C DEL C:/TEMP/RUN.bat");
于 2011-12-19T13:27:36.683 に答える