3 回答

TA貢獻(xiàn)1836條經(jīng)驗(yàn) 獲得超5個(gè)贊
是的,我確實(shí)使用了該MapVirtualKey方法。但是我期待更多有關(guān)如何使用它的細(xì)節(jié):DllImport要使用的指令,enum特定于字符映射的指令等。
我不喜歡這些答案,在Google上停留大約5秒鐘,然后提出一個(gè)解決方案:真正的挑戰(zhàn)是將所有內(nèi)容放在一起,而不必浪費(fèi)大量時(shí)間在無樣本的MSDN頁面或其他編碼論壇上為了得到你的答案。沒有冒犯的根基,但是您的回答(即使是很好)也沒問題,因?yàn)榧词乖谡搲习l(fā)布我的問題之前我也有這個(gè)答案!
因此,您去了,我要發(fā)布我想要的東西-一個(gè)現(xiàn)成的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);
}
感謝您的關(guān)心...并享受!
- 3 回答
- 0 關(guān)注
- 640 瀏覽
添加回答
舉報(bào)