2011-03-24 59 views
0

我試圖從kinect控制擊鍵。例如,當我的右手向右移動時,意味着我按住鍵盤上的右箭頭。我完成編寫kinect的代碼,但我不知道如何製作自定義鍵盤設備。我試圖使用SendKey但它不起作用,因爲沒有保持鍵命令。我也使用循環,但它不起作用。我嘗試使用kinect通過WPF應用程序控制谷歌地球。任何從kinect移動將被轉換爲鍵盤的按下或按住,以便它可以控制谷歌地球的應用程序。任何建議?
最好的問候,
C.Porawat 有沒有可能的方法來保持按鍵不使用鍵盤

+0

你有它固定的嗎?其實我的目標也是使用Kinect控制谷歌地球。你能給我指導如何做到這一點? – Faizan 2014-09-25 07:46:51

回答

1

我得到了答案。通過使用使用System.Windows.InteropSystem.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 
1

沒有HOLD鍵狀態或事件。按住鍵盤上的按鍵時,會生成多個按鍵事件。這個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); 
} 
+0

這是工作,但我怎樣才能用這個win32在C#中使用? – 2011-03-25 05:22:34

+0

你有沒有嘗試過一個像這樣100ms睡眠的循環Sendkeys?但是,這將阻止Ui線程,所以如果可能的話,從另一個線程中執行。 – 2011-03-29 03:52:06

相關問題