2011-09-14 7 views
3

Win32関数GetKeyNameTextは、現在の入力ロケールのキーボードキーの名前を提供します。 MSDNからGetKeyNameText to english

キー名は、このように機能が 異なる入力ロケールに異なる結果を与えることができる、現在 インストールキーボードのレイアウトに応じて変換されます。

入力ロケールを短時間強制できますか?または、常に英語で名前を返すGetKeyNameTextの別の代替手段がありますか?

答えて

2

更新:この回答は機能しません。実際には、ユーザーのキーボード設定が変更されます。これは、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); 

// Call GetKeyNameText 

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

キーボードレイアウトを英語に切り替えるのに非常に時間がかかります。また、レイアウトを元に戻すことができません。 – Serg