Вы можете установить язык ввода по умолчанию, используя Windows SystemParametersInfo API.
BOOL WINAPI SystemParametersInfo(
__in UINT uiAction,
__in UINT uiParam,
__inout PVOID pvParam,
__in UINT fWinIni
);
Использование JNA намного проще, чем использование JNI.Чтобы вызвать эту функцию API в User32.dll с помощью JNA, создайте интерфейс:
public interface User32 extends StdCallLibrary
{
User32 INSTANCE = (User32) Native.loadLibrary("user32", User32.class);
bool SystemParametersInfo(int uiAction, int uiParam, int[] pInt, int fWinIni);
}
Вы определяете LCID языка, на который хотите изменить.( Вот список из MSDN.) Например, английский - 0x409.Затем используйте LCID при вызове SystemParametersInfo
:
int lcid = 0x409;
final int SPI_SETDEFAULTINPUTLANG = 90;
User32.INSTANCE.SystemParamtersInfo(SPI_SETDEFAULTINPUTLANG, 0, new int[] { lcid }, 0);
И тогда ваш язык ввода по умолчанию был изменен!