【问题标题】:Simulate arrows key press in C# WPF在 C# WPF 中模拟箭头按键
【发布时间】:2015-05-19 13:36:22
【问题描述】:

我想在 IF 条件为真时模拟向左和向右箭头键的按下。到目前为止,我已经尝试过这个,但它不起作用。 我也在使用 win32.dll 导入方法控制鼠标。如果我使用 SendKeys.Send("LEFT");方法,我的鼠标移动没有得到控制。我觉得这个调用后代码没有运行。

我在顶部包含了 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);

                            }

【问题讨论】:

  • 您是否正在使用 Kinect 传感器,并且您希望用户执行触发按键的操作?我刚刚看到你在下面的评论中提到了 kinect,我想我会问的。您可能希望将此事实添加到您的问题和标记中,因为了解 kinect 的人可能能够更好地帮助您。

标签: c# wpf simulation keypress arrow-keys


【解决方案1】:

您应该在代码中为 LEFTRIGHT 添加括号:

SendKeys.Send("{LEFT}");

这是完整的code list

【讨论】:

  • 我确实添加了括号,但仍然是同样的问题。我的鼠标停止得到控制。另外,如果我注释掉整行,一切都会正常工作。使用 SendKeys 功能的前提条件是什么?有什么特殊的库要包含,如何包含?
  • 你能在 Visual Studio 的这个调用上设置一个断点,然后检查你的代码在这一行之后的行为吗?
【解决方案2】:
SendKeys.Send("{LEFT}");
SendKeys.Send("{RIGHT}");

【讨论】:

  • 还是不行啊兄弟!请帮助...我需要在我的代码中包含什么才能使其运行?
  • 所以我想通了,如果我注释掉 SendKeys.Send("RIGHT");然后我的鼠标控制工作但仍然没有按下左键。该代码在无限循环中运行,因为它使用的是 kinect 用户骨架。这是造成问题的原因吗/
  • 这是两个单独的击键。 SendKeys.Send("{LEFT}") 将发送左箭头键,SendKeys.Send("{RIGHT}") 将发送右箭头键。
【解决方案3】:

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

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)
    }
}

希望这是有用的。

【讨论】:

  • 这对左右键盘的箭头键有什么作用?一旦条件为真,我想以编程方式按下这些按钮。
  • 抱歉,我应该使用 KeyPress 事件,但工作方式相同。我怀疑您并不是真的想以编程方式按下按钮,而是希望按下按钮的效果运行:msdn.microsoft.com/en-us/library/…
猜你喜欢
  • 2013-03-07
  • 1970-01-01
  • 2021-11-30
  • 2016-10-07
  • 1970-01-01
  • 1970-01-01
  • 2014-07-12
  • 1970-01-01
  • 2011-04-06
相关资源
最近更新 更多