2010-04-27 3 views
2

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

+0

Вы можете получить доступ к API Windows через собственный интерфейс Java (JNI). Не знаете, какие функции API вам нужно вызвать, чтобы изменить язык по умолчанию. –

+0

Вы хотите изменить язык ввода по умолчанию или региональные настройки по умолчанию? – mdma

ответ

0

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

5

Вы можете установить язык ввода по умолчанию, используя API Windows SystemParametersInfo.

BOOL WINAPI SystemParametersInfo(
    __in  UINT uiAction, 
    __in  UINT uiParam, 
    __inout PVOID pvParam, 
    __in  UINT fWinIni 
); 

Использование JNA намного проще, чем с помощью JNI. Для вызова этой функции API в User32.dll, используя ЮНА, создать интерфейс:

public interface User32 extends StdCallLibrary 
{ 
    User32 INSTANCE = (User32) Native.loadLibrary("user32", User32.class); 

    bool SystemParametersInfo(int uiAction, int uiParam, int[] pInt, int fWinIni); 
} 

Вы определяете LCID языка вы хотите, чтобы изменить. (Here's список из MSDN.) Например, английский - 0x409. Затем использовать LCID в вызове SystemParametersInfo:

int lcid = 0x409; 
final int SPI_SETDEFAULTINPUTLANG = 90; 
User32.INSTANCE.SystemParamtersInfo(SPI_SETDEFAULTINPUTLANG, 0, new int[] { lcid }, 0); 

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