Question 150

Changer les "préférences utilisateur" ou les "Options régionales et linguistiques" : Comment l'éviter ?

Windows autorise une grande souplesse dans le paramétrage, en général depuis le panneau de configuration. On peut ainsi définir des paramètres "système" tels que : la vitesse du clavier, la vitesse du double click, activer ou désactiver l'écran de veille, changer la résolution de l'écran ou encore changer le fond d'écran. Windows définit également des Options Régionales, permettant de définir le symbole représentant le séparateur décimal, le format de date et heure, le symbole monétaire, etc.

Problème
Le programmeur peut parfois être tenté de modifier la valeur de ces paramètres système, pour les "adapter" à son programme.

C'est en général une très mauvaise pratique; il est fortement déconseillé d'essayer de forcer un changement de ces valeurs. C'est le programme qui doit s'adapter à l'environnement de l'utilisateur, et surtout pas l'inverse! En effet, rien ne garantit que votre application aura les privilèges nécessaires pour réaliser cette opération. En outre, rien de plus désagréable pour un utilisateur que de voir ses paramètres modifiés à son insu par une application.

Il est tout aussi dangereux de penser qu'on peut simplement changer les paramètres "juste pour son application" et les restaurer ensuite : Windows est un système multi-tâches, plusieurs programmes peuvent être simultanément en cours d'exécution. Pire encore, rien ne garantit que l'application aura l'opportunité de se fermer proprement. L'utilisateur peut éteindre brutalement son ordinateur, un "crash" système peut survenir, etc. Dans tout ces cas, vous aurez changez les paramètres de l'utilisateur, et ce sans espoir de restauration. Pour un utilisateur peu expérimenté (ou même expérimenté, d'ailleurs), cela peut provoquer des désagréments insupportables.
Aucune application sérieuse ne devrait jamais faire ce genre de choses.

Solutions!
Il existe toujours une solution permettant de régler ce type de problème. Une bonne application ne fera pas de supposition sur la valeur des paramètres utilisateur. En revanche, une bonne application pourra lire la valeur de ces paramètres et s'adapter en fonction de la valeur de ceux-ci.

Par exemple, concernant les conversions de texte en nombres, VB dispose de fonctions qui savent gérer les séparateurs en fonction des options locales. Voir à ce sujet l'article : Comment convertir une chaîne en nombre indépendamment des séparateurs décimaux et milliers ?.

Pour récupérer les valeurs des options régionales de l'utilisateur, l'API "GetLocaleInfo" peut se révéler particulièrement utile. Un exemple complet d'utilisation est présenté dans cet article : Comment récupérer le symbole décimal et le séparateur des milliers défini par l'utilisateur ....

L'API "SystemParametersInfo" est très utile pour récupérer un ensemble de paramètres (fond d'écran, écran de veille, vitesse du clavier, etc). Son emploi est un peu délicat, on trouvera un lien le décrivant dans la section "Aller plus loin".

Le cas du changement de résolution de l'écran est un peu particulier. Forcer un changement peut s'avérer nécessaire, pour certains jeux en mode plein écran, quand les traitements graphiques sont lourds.
Mais dans le cas général, il ne faut pas changer la résolution de l'écran. Il est infiniment plus élégant de concevoir des forms ou feuilles de manière à ce qu'elles soient indépendantes de la résolution de l'écran. On peut alors utiliser des scrollbars, utiliser judicieusement l'événement resize de la form, implémenter des "splitters", etc. L'article suivant donne de bonnes pistes pour ceci :Comment créer un Form ou un PictureBox "scrollable" ?

Pour aller plus loin

Voir aussi :

Date de publication : 25 février 2007
Dernière modification : 25 février 2007
Rubriques : Généralités
Mots-clés : séparateur décimal, paramètre, préférence, setting, panneau de configuration, local settings,préférences régionales,linguistiques,utilisateur, paramètres régionaux