Мы можем использовать GetKeyNameText() для получения строки, представляющей имя ключа. Есть ли способ сделать обратное, т.е. получить скан-код или виртуальный ключ для заданного имени ключа?
Я хочу записать имена ключей в файл конфигурации, чтобы пользователи могли легко их редактировать. Когда я читаю в файле конфигурации, мне нужно сделать обратное GetKeyNameText().





Плохая идея, эти имена не являются постоянными:
The key name is translated according to the layout of the currently installed keyboard, thus the function may give different results for different input locales.
Если вы в отчаянии, я полагаю, вы можете вызвать GetKeyNameText в цикле, пробуя все возможные скан-коды.
MapVirtualKey может преобразовать скан-код в виртуальный ключ, если вам это тоже нужно. Виртуальные клавиши стабильно работают на всех клавиатурах и во всех версиях Windows.
Я бы посоветовал вам жестко закодировать некоторые распространенные имена и иметь виртуальные клавиши, такие как A-Z, 0-9, Ctrl, Alt, Shift, Home, Insert и т. д., и сохранить их как текст на английском языке. Сохраняйте скан-код только для других странных клавиш.
Спасибо, да, это кажется лучшим подходом.