我使用SetWindowHook
来设置即时全局热键的低级别keyboark钩子。 但是,当我尝试使用热键代替';'[],/'等字母时,它会返回错误/高价值字母。就像当我按逗号时,它给了我一个1/4的符号。C#热键不正确的字母
这里是回调
private static IntPtr HookCallback(int nCode, IntPtr wParam, IntPtr lParam)
{
char letter;
if (nCode >= 0 && wParam == (IntPtr)WM_KEYDOWN)
{
int vkCode = Marshal.ReadInt32(lParam);
letter = (char)vkCode;
// converts letters to capitals
if (char.IsLetter(letter) == true)
{
if ((((ushort)GetKeyState(0x14)) & 0xffff) != 0)
{
letter = char.ToUpper(letter);
if (GetAsyncKeyState(((int)VirtualKeys.Shift)) != 0)
letter = char.ToLower(letter);
}
else if (GetAsyncKeyState(((int)VirtualKeys.Shift)) != 0)
{
letter = char.ToUpper(letter);
}
else
{
letter = char.ToLower(letter);
}
}
logs.Add(letter);
}
return CallNextHookEx(_hookID, nCode, wParam, lParam);
}
我怎样才能标点符号快捷键,而无需手动比较每一个错误的值?