Да, я использовал метод MapVirtualKey
. Но я ожидал более подробной информации о том, как его использовать: какая директива DllImport
, что enum
специфично для сопоставления символов и т. Д.
Мне не нравятся эти ответы, где вы google, как 5 секунд, а затем просто предложите решение: реальная задача состоит в том, чтобы собрать все части и не тратить время на тонны страниц MSDN без образца или на другие форумы кодирования, чтобы получить ваш ответ. Не оскорбительный цоколь, но ваш ответ (даже хороший) был бесспорным, так как у меня был этот ответ, прежде чем публиковать мой вопрос на форуме!
Так что вы идете, я собираюсь отправить то, что я искал - установлена его из коробки C# решение:
1 Поместите эту директиву в вашем классе:
[DllImport("user32.dll")]
static extern int MapVirtualKey(uint uCode, uint uMapType);
2 Получить ваш символ, как это:
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);
}
Спасибо за заботу ... и наслаждаться!
[MapVirtualKey] (http://msdn.microsoft .com/en-us/library/ms646306 (VS.85) .aspx)()? – plinth 2008-11-25 20:50:51