1

特定の文字を取得するためにどのキーまたはキーの組み合わせを押す必要があるかを調べる方法はありますか? 「1」、「a」などの一部の文字は簡単ですが、「.」、「_」、「ü」などの他の文字はそれほど簡単ではありません。何か案が ?ありがとう。

4

2 に答える 2

0

ここに「特殊文字」の完全なリストがあります。これらは実際には文字エンティティであり、1 つの文字に対して特定のコードが与えられます。

これは主に、コードがシーケンスを提供する HTML で使用されますが、クライアント側では文字エンティティが表示されます。

ここでは、仮想キー コードから System.Windows.Forms.Keys に変換する方法について、重複する可能性のある回答を示します。

編集 「。」などの文字を含む別の複製もあります。here:文字を同等の System.Windows.Input.Key Enum 値に変換する方法は?

于 2013-06-26T07:46:32.513 に答える
0

あなたが投稿したリンクのおかげで、ここに投稿する解決策にたどり着きました。入力は文字で、出力は System.Windows.Forms.Keys のリストです。最初の Keys は実際のキーで、リスト内の他のキー (存在する場合) は修飾キーです。

    [DllImport("user32.dll")]
    static extern short VkKeyScan(char ch);

    public static List<Keys> FromCharacterToKeys(char c)
    {
        var key = BitConverter.GetBytes(VkKeyScan(c));
        if (key[1] > 0)
        {
            var list = new List<Keys> {(Keys) key[0]};
            list.AddRange(ConvertModifierByte(key[1]));
            return list;
        }
        else
        {
            return new List<Keys> { (Keys)key[0] }; 
        }    
    }

    private static List<Keys> ConvertModifierByte(byte modifier)
    {
        switch ((short)modifier)
        {
            case 1:
                return new List<Keys> { Keys.Shift };
            case 2:
                return new List<Keys> { Keys.Control };
            case 4:
                return new List<Keys> { Keys.Alt };
            case 6:
                return new List<Keys> { Keys.Control, Keys.Alt };
            default:
                return new List<Keys> { Keys.None };
        }
    }
于 2013-06-26T13:13:35.283 に答える