none
SentInput 模拟按键时 当把keyevent 设置为keyup时 并未发生弹起行为 RRS feed

  • 问题

  • 我在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一直处于按下状态而无法弹起

    2012年9月26日 2:07

全部回复