0
我目前正试图挂钩键盘,并把基本拉丁文输入(0×21 < & & 0x7e格式>)到宽字符(0xff10 < & & 0xff6d>)输入。C# - 键盘钩子+开启基本拉丁语成宽字符
简而言之,无论何时用户按下ex。键盘上的“A”键,输入应该变成“A”(所谓的“E”)。宽字符是Unicode。我没有任何问题,将A变为B.问题始于显示Unicode。
我正在使用http://inputsimulator.codeplex.com/库。到目前为止我的代码是:
private IntPtr HookCallback(int nCode, IntPtr wParam, IntPtr lParam)
{
if(nCode >= 0 && wParam == (IntPtr)257)
{
int _vkCode = Marshal.ReadInt32(lParam);
if(_vkCode >= 0x21 && _vkCode <= 0x7e)
{
_vkCode += 0xfee0;
InputSimulator.SimulateTextEntry(Encoding.Unicode.GetString(BitConverter.GetBytes(_vkCode)));
return (IntPtr)1;
}
}
return CallNextHookEx(_hookID, nCode, wParam, lParam);
}
但是我所有的问题都只是一个问号。