Как мне преобразовать символ в код ключа в .Net? - PullRequest
2 голосов
/ 27 ноября 2008

Я хочу преобразовать строку в серию кодов клавиш, чтобы затем я мог отправить их через PostMessage в элемент управления. Мне нужно смоделировать фактический ввод с клавиатуры, и мне интересно, является ли массивный оператор switch единственным способом для преобразования символа в правильный код клавиши или есть более простой метод.

====

Получил мое решение - http://msdn.microsoft.com/en-us/library/ms646329(VS.85).aspx

VkKeyScan вернет правильный код ключа для любого символа.

(И да, я бы вообще этого не делал, но при проведении автоматического тестирования и проверке правильного реагирования на нажатия клавиш это работает достаточно надежно).

Ответы [ 4 ]

2 голосов
/ 27 ноября 2008

Рэймонд говорит, что это плохая идея.

http://blogs.msdn.com/oldnewthing/archive/2005/05/30/423202.aspx

0 голосов
/ 30 ноября 2008

Гораздо более надежным ожиданием отправки строки нажатий клавиш в окне является использование класса SendKeys

 System.Windows.Forms.SendKeys("This is a test");
 System.Windows.Forms.SendKeys("This is sends CTRL+J ^j");

Это будет более предсказуемо и должно сэкономить вам время.

0 голосов
/ 30 ноября 2008

Получил мое решение - http://msdn.microsoft.com/en-us/library/ms646329(VS.85).aspx

VkKeyScan вернет правильный код ключа для любого символа.

(И да, я бы вообще этого не делал, но при проведении автоматического тестирования и проверке правильного реагирования на нажатия клавиш это работает достаточно надежно).

0 голосов
/ 27 ноября 2008

Для A-z 1-9 вы можете попытаться встроить символ в строку кода ключа string.Format("KEY_KEY_{0}", char.ToString()), а затем использовать Enum.Parse для извлечения значения Enum, но это немного отчасти

Или посмотрите Как преобразовать код ключа uint в enum Keys на экспертизе sexchange и просто обойти сложные случаи.

Я согласен, что заявление о переключении ужасно

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...