2010-04-27 64 views
2

可以使用Java应用程序更改我的主机系统(Windows XP)的默认语言吗? 如果是的话,我该怎么做?使用Java应用程序更改默认Windows语言

+0

您可以通过Java Native Interface(JNI)访问Windows API。不知道您需要调用哪些API函数来更改默认语言。 – 2010-04-27 20:15:28

+0

您的意思是更改默认的输入语言或默认的区域设置? – mdma 2010-04-27 21:54:39

回答

0

Java SE API没有提供内建的方法。我至少在Desktop API中看不到任何东西。您需要获取OS本机API。忘记Java的这一点,你将如何做到这一点没有Java?一旦找出,请使用Java中的JNI调用特定的API。

5

您可以使用Windows SystemParametersInfo API设置默认输入语言。

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

使用JNA比使用JNI更容易。要调用JNA使用user32.dll中此API函数,创建一个接口:

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); 

而且thenn默认输入语言已经被改变了!