2

次のような SendInput メソッドを使用してキーボードをシミュレートする仮想キーボードを作成しようとしています。

        public static void SendKeyDown(System.Windows.Forms.Keys key)
        {
            INPUT k = new INPUT();
            k.type = (int)InputType.INPUT_KEYBOARD;
            k.ki.wVk = (short)key;
            k.ki.dwFlags = (int)KEYEVENTF.KEYDOWN;
            k.ki.dwExtraInfo = GetMessageExtraInfo();

            SendInput(1, new INPUT[] { k }, Marshal.SizeOf(k));
        }

しかし、 Keys 列挙からスカンジナビア文字の Ä、Ö、Å を見つけることができません。SendInput メソッドを使用してこれらの手紙を送信するにはどうすればよいですか?

4

2 に答える 2

4

を使用して Unicode 文字を送信できますKEYEVENTF_UNICODE

k.type = (int)InputType.INPUT_KEYBOARD;
k.ki.wScan = 'ö';
k.ki.wVk = 0;
k.ki.dwFlags = (int)KEYEVENTF.UNICODE | (int)KEYEVENTF.KEYDOWN;
k.ki.dwExtraInfo = GetMessageExtraInfo();

Oem3これは、アプリケーションが実行されているプラ​​ットフォームのカルチャによって割り当てられた文字が異なる et alを使用するソリューションよりも移植性が高くなります。

(残りの P/Invoke 署名は、他の回答で見つけることができます。)

于 2013-03-15T22:13:02.403 に答える
0

自分で解決策を見つけました:

Oem3 = ö、Oem7 = ä、Oem6 = å

于 2013-03-15T22:04:35.937 に答える