Да, я использовал метод MapVirtualKey
. Но я ожидал более подробной информации о том, как его использовать: какую директиву DllImport
использовать, какая enum
специфична для сопоставления с символами и т. д.
Мне не нравятся эти ответы, когда вы гуглите около 5 секунд, а затем просто предлагаете решение: настоящая проблема состоит в том, чтобы собрать все части воедино и не тратить свое время на тонны страниц MSDN без образцов или другие форумы по кодированию. для того, чтобы получить ваш ответ. Без обид, плинтус, но твой ответ (даже хороший) был бесполезен, так как я получил этот ответ еще до того, как разместил свой вопрос на форуме!
Итак, вот, я собираюсь опубликовать то, что искал - готовое решение C#:
1- Поместите эту директиву в свой класс:
[DllImport("user32.dll")]
static extern int MapVirtualKey(uint uCode, uint uMapType);
2- Получите свой char следующим образом:
protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
const int WM_KEYDOWN = 0x100;
if (msg.Msg == WM_KEYDOWN)
{
// 2 is used to translate into an unshifted character value
int nonVirtualKey = MapVirtualKey((uint)keyData, 2);
char mappedChar = Convert.ToChar(nonVirtualKey);
}
return base.ProcessCmdKey(ref msg, keyData);
}
Спасибо за заботу... и наслаждайтесь!
person
Horas
schedule
26.11.2008