有没有办法在不使用键盘的情况下按住键击

时间:2011-03-24 11:43:17

标签: c# wpf keyboard kinect

我正试图控制kinect的击键。例如,当我的右手向右移动时,意味着我在键盘上按住右箭头。我完成了为kinect编写代码,但我不知道如何制作自定义键盘设备。我尝试使用 SendKey 但它没有用,因为没有hold key命令。我也使用循环,线程,但它也不起作用。我尝试使用kinect通过WPF应用程序控制谷歌地球。从kinect的任何移动将被转换为键盘的按下或保持,以便它可以控制谷歌地球应用程序。有什么建议吗?
最诚挚的问候,
C.Porawat

2 个答案:

答案 0 :(得分:1)

没有保持关键状态或事件。按住键盘上的键时,会生成多个键事件。这个win32示例模拟了永久保留的左键:

while(true)
{
    INPUT input =
    {
        INPUT_KEYBOARD
    };
    KEYBDINPUT tmp =
    {
        VK_LEFT,
        0,
        0,
        0,
        NULL
    };
    input.ki = tmp;
    SendInput(1, &input, sizeof(INPUT));
    ::Sleep(100);
}

答案 1 :(得分:1)

我得到了答案。使用 System.Windows.Interop System.Runtime.InteropServices 。然后,使用:

[DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]
    public static extern void keybd_event(byte bVk, byte bScan, uint dwFlags, IntPtr dwExtraInfo);

然后,当我想通过以下方式调用键盘事件时:

 keybd_event(0x27, 0, KEYEVENTF_KEYDOWN, new System.IntPtr()); //press right arrow on the keyboard
相关问题