3

shift/ ctrl/altキー状態をシミュレートする方法を知っている人はいます か?

HTML5 canvas基本的に、クライアント側で を使用し、サーバー側でアプリを実行するリモート デスクトップ アプリを作成していますC#。サーバー側アプリは画面をキャプチャして送信し、クライアントから送信されたキーの押下をシミュレートします。

キーを押す以外はすべて機能しています。クライアント側は次を送信します。

 kd; KEYCODE HERE 

キーが押されたときと

ku; KEYCODE HERE 

離したとき(キーアップ)。私はこのコードを使用しています:

[System.Runtime.InteropServices.DllImport("user32.dll")]
static extern void keybd_event(byte bVk, byte bScan, uint dwFlags, int dwExtraInfo);
const int KEYEVENTF_EXTENDEDKEY = 0x1;
const int KEYEVENTF_KEYUP = 0x2;

// - - - - -

// Keyboard events
if (receivedData[0] == "kd")
{
    // Shift key pressed
    if (receivedData[1] == "16")
    {
        keybd_event((byte)Convert.ToInt32(Keys.LShiftKey), 0, KEYEVENTF_EXTENDEDKEY, 0);
        return;
    }

    keybd_event((byte)Convert.ToInt32(receivedData[1]), 0, KEYEVENTF_EXTENDEDKEY, 0);
}
if (receivedData[0] == "ku")
{
    // Shift key released
    if (receivedData[1] == "16")
    {
        keybd_event((byte)Convert.ToInt32(Keys.LShiftKey), 0, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
        return;
    }

    keybd_event((byte)Convert.ToInt32(receivedData[1]), 0, KEYEVENTF_EXTENDEDKEY | KEYEVENTF_KEYUP, 0);
}

通常のキーは正常に機能しますが、状態を持つキーは正しく機能しません。左シフトで受け取った JavaScript キーコードは 16 です。

4

1 に答える 1

1

Windows Input Simulatorライブラリを使用することになりました。Shift、Ctrl、Alt キーを含むキーダウンとキーアップをシミュレートするのに適しています。

于 2013-01-13T13:13:43.903 に答える