5 votes

Forcer GetKeyNameText en anglais

La fonction Win32 GetKeyNameText fournira le nom des touches du clavier dans la disposition actuelle des entrées.

D'après MSDN:

Le nom de la touche est traduit selon la disposition du clavier actuellement installé, ainsi la fonction peut donner des résultats différents pour différentes dispositions des entrées.

Est-il possible de forcer la disposition des entrées pour une courte durée? Ou existe-t-il une autre alternative à GetKeyNameText qui renverra toujours le nom en anglais?

3voto

decasteljau Points 3305

Mise à jour: Cette réponse ne fonctionne pas. Elle modifie en fait les paramètres du clavier de l'utilisateur. Il semble s'agir d'un changement de comportement entre les versions de Windows.

CString csLangId;
csLangId.Format( L"%08X", MAKELANGID( LANG_INVARIANT, SUBLANG_NEUTRAL ) );
HKL hLocale = LoadKeyboardLayout( (LPCTSTR)csLangId, KLF_ACTIVATE );
HKL hPrevious = ActivateKeyboardLayout( hLocale, KLF_SETFORPROCESS );

// Appeler GetKeyNameText

ActivateKeyboardLayout( hPrevious, KLF_SETFORPROCESS );
UnloadKeyboardLayout( hLocale );

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X