0

kinectからキーストロークを制御しようとしています。たとえば、右手が右に移動すると、キーボードの右矢印を押したままになります。kinectのコードを書き終えましたが、カスタムキーボードデバイスの作成方法がわかりません。SendKeyを使おうとしましたが、hold keyコマンドがないため、機能しません。私もループ、スレッドを使用していますが、それも機能しません。kinectを使用して、WPFアプリケーションを介してGoogleEarthを制御しようとしています。kinectからの移動はすべて、キーボードの長押しに変換されるため、GoogleEarthアプリケーションを制御できます。なにか提案を?
よろしく、
C.Porawat

4

2 に答える 2

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
于 2011-03-29T03:48:05.270 に答える
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);
}
于 2011-03-24T20:37:04.993 に答える