Изменение языка Windows по умолчанию с помощью приложения Java - PullRequest
2 голосов
/ 28 апреля 2010

Могу ли я изменить язык по умолчанию моей хост-системы (Windows XP) с помощью приложения Java? Если да, то как я могу это сделать?

Ответы [ 2 ]

5 голосов
/ 28 апреля 2010

Вы можете установить язык ввода по умолчанию, используя 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);

И тогда ваш язык ввода по умолчанию был изменен!

0 голосов
/ 28 апреля 2010

Нет встроенных способов, предоставляемых Java SE API. По крайней мере, я ничего не вижу в API Desktop. Вам нужно будет получить OS-native API. Забудьте об этом Java, как бы вы сделали это без Java? После выяснения, вызовите конкретный API, используя JNI в Java.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...