3 回答

TA貢獻1836條經驗 獲得超5個贊
是的,我確實使用了該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);
}
感謝您的關心...并享受!
- 3 回答
- 0 關注
- 648 瀏覽
添加回答
舉報