1

Visual Studio 2010 を使用して C# でアプリケーションを作成しています。これは Windows フォーム アプリケーションです。

私がやりたいことは、3 つのキーが押されたときに関数をトリガーすることです。キーは CTRL、SHIFT、X です。

私は今このコードを持っています:

private void Form1_KeyDown(object sender, KeyEventArgs e)
        {
            Console.WriteLine(e.KeyValue);
            /*
             *KeyValue:
             *CTRL = 17
             *Shift = 16
             *X = 88
             */
         }

ご覧のとおり、かなり空っぽです。これはもうわからないからです。

インターネットでこのコードを見つけましたが、実装方法がわかりません:

[DllImport("user32.dll")]
        public static extern int GetKeyboardState(byte[] keystate);

        private void Form1_KeyDown(object sender, KeyEventArgs e)
        {
            byte[] keys = new byte[255];

            GetKeyboardState(keys);

            if (keys[(int)Keys.Up] == 129 && keys[(int)Keys.Right] == 129)
            {
                Console.WriteLine("Up Arrow key and Right Arrow key down.");
            }
        }

皆さんへの私の質問は、すべてのツリー キーが同時に押されているかどうかを確認するにはどうすればよいですか?

または、そのようなホットキーを作成するためのより良い方法を知っているとしたら、それはどうですか?

4

1 に答える 1

7

CTRL + SHIFT + Xの場合、Xだけが実際に適切なキーです。その他は「修飾キー」です。したがって、P/Invokeを分割する必要はありません:-)Key_Downハンドラーでこれを実行するだけです。

if (e.KeyCode == Keys.X && e.Control && e.Shift) {
    // CTRL+SHIFT+X was pressed!
}
于 2012-11-23T22:02:20.373 に答える