在C#WPF中模拟箭头键

在C#WPF中模拟箭头键,c#,wpf,simulation,keypress,arrow-keys,C#,Wpf,Simulation,Keypress,Arrow Keys,我想模拟当IF条件为真时按下左右箭头键。Uptill现在我已经尝试过了,但它不起作用。 我还使用win32.dll导入方法控制鼠标。如果我使用SendKeys.Send(“左”);方法,我的鼠标移动不受控制。我觉得这个调用之后代码不会运行 我在顶部包含了system.windows.forms,我做错了什么 如何以简单的方式模拟箭头键 if (shoulderLeft.Position.Z > shoulderRight.Position.Z)

我想模拟当IF条件为真时按下左右箭头键。Uptill现在我已经尝试过了,但它不起作用。 我还使用win32.dll导入方法控制鼠标。如果我使用SendKeys.Send(“左”);方法,我的鼠标移动不受控制。我觉得这个调用之后代码不会运行

我在顶部包含了system.windows.forms,我做错了什么

如何以简单的方式模拟箭头键

     if (shoulderLeft.Position.Z > shoulderRight.Position.Z)
                            {
                                status.Fill = new SolidColorBrush(System.Windows.Media.Colors.DarkBlue);
                               SendKeys.Send("LEFT");
                               // System.Windows.Forms.MessageBox.Show("Left ROTATION");


                            }
                                //right rotate
                            else if ((shoulderLeft.Position.Z < shoulderRight.Position.Z))
                            {
                                SendKeys.Send("RIGHT");
                                status.Fill = new SolidColorBrush(System.Windows.Media.Colors.Red);

                            }
if(shoulderLeft.Position.Z>shoulderRight.Position.Z)
{
status.Fill=新的SolidColorBrush(System.Windows.Media.Colors.DarkBlue);
SendKeys.Send(“左”);
//System.Windows.Forms.MessageBox.Show(“左旋转”);
}
//右转
否则如果((肩左.位置Z<肩右.位置Z))
{
SendKeys.Send(“右”);
status.Fill=新的SolidColorBrush(System.Windows.Media.Colors.Red);
}

您应该在代码中的
周围添加括号:

SendKeys.Send("{LEFT}");

以下是完整的说明。

模拟输入事件通常不是一种好的做法,而是将事件处理程序中运行的代码封装在参数化方法中,然后在需要模拟事件时调用该函数。例如(有点做作):


希望这有用。

我确实添加了括号,但仍然存在相同的问题。我的鼠标被控制住了。而且,如果我把这整行注释掉,一切都会很好。使用SendKeys功能的先决条件是什么?有什么特殊的库要包括在内吗?怎么做?你能在Visual Studio中为这个调用设置一个断点并在这一行之后检查你的代码的行为吗?还是不起作用,兄弟!请帮忙。。。我需要在我的代码中包含什么才能使它运行呢?所以我想,如果我注释掉SendKeys.Send(“右”);然后,我的鼠标控制器工作,但仍然没有按下左键。代码在无限循环中运行,因为它使用的是kinect用户骨架。这是造成问题的原因/这是两个不同的按键
SendKeys.Send(“{LEFT}”)
将发送左箭头键,而
SendKeys.Send({RIGHT}”)
将发送右箭头键。这对键盘左右的箭头键如何工作?一旦条件为真,我想以编程方式按下这些按钮。对不起,是的,我应该使用按键事件,但工作方式相同。我怀疑您不是真的想通过编程方式按下按钮,而是想让按下按钮的效果运行:您使用的是Kinect传感器,并且您希望用户执行触发按键的操作吗?我刚才看到你在下面的评论中提到kinect,我想我会问一下。您可能希望将这一事实添加到您的问题和标志中,因为了解kinect的人可能能够更好地帮助您。
SendKeys.Send("{LEFT}");
SendKeys.Send("{RIGHT}");
void myForm_MouseMoved(object sender, MouseEventArgs e)
{
    MoveCharacter(e.X, e.Y);
}

void myForm_SomethingElseHappened(object sender, EventArgs e)
{
    if(IsCharacterTooLow()) 
    {            
        MoveCharacter(_currentPos.X, _currentPos.Y+20)
    }
}