我在win8上开发desktop程序,用的是wpf,当在模拟按键时发现如下错误
void SendKeyCommand(Key key,bool isUp){
Input[] inputs = new Input[1];
inputs[0].type = INPUTTYPE.KEYBOARD;
inputs[0].ki.wVk = KeyInterop.VirtualKeyFromKey(key);
int dwFlag = 0;
if(isUp==true)
dwFlag |= PRESSTYPE.KEY_UP;
inputs[0].ki.dwFlags = dwFlag;
inputs[0].ki.dwExtraInfo = new IntPtr(0);
inputs[0].ki.time = CallMethod.GetTickCount();
if (CallMethod.SendInput((uint)inputs.Length, inputs, Marshal.SizeOf(inputs[0])) < inputs.Length)
{
throw new Win32Exception(Marshal.GetLastWin32Error());
}
}
当我调用 SendKeyCommand(Key.A,false) //模拟按下
SendKeyCommand(key.A,true)//模拟弹起
会上屏两个a,而不是模拟一次按下 一次弹起,当我模拟组合键会发现按下shift后,shift一直处于按下状态而无法弹起