2010-04-27 5 views
2

Puis-je modifier la langue par défaut de mon système hôte (Windows XP) avec une application Java? Si oui, comment je peux le faire?Modification de la langue Windows par défaut avec l'application Java

+0

Vous pouvez accéder à l'API Windows via l'interface Java native (JNI). Je ne sais pas quelles fonctions de l'API vous devez appeler pour changer la langue par défaut. –

+0

Voulez-vous modifier la langue de saisie par défaut ou les paramètres régionaux par défaut? – mdma

Répondre

0

Il n'existe aucune méthode intégrée fournie par l'API Java SE. Je ne vois au moins rien dans l'API Desktop. Vous aurez besoin de récupérer les API natives du système d'exploitation. Oubliez Java pour ce bit, comment voulez-vous faire cela sans Java? Une fois identifié, appelez l'API particulière en utilisant JNI en Java.

5

Vous pouvez définir la langue d'entrée par défaut à l'aide de l'API Windows SystemParametersInfo.

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

L'utilisation JNA est beaucoup plus facile que d'utiliser JNI. Pour bénéficier de cette fonction API dans User32.dll à l'aide de la JNA, créer une interface:

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

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

Vous déterminez le LCID de la langue que vous voulez changer. (Here's la liste de MSDN.) Par exemple, l'anglais est 0x409. Une utilisation alors le LCID dans l'appel à SystemParametersInfo:

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

Et thenn votre langue d'entrée par défaut a été changé!

Questions connexes