我々は同じシナリオの話をしている、非常にわからないようになっているはずですが、ALT +テンキーの 『のような修飾子を使用するときのキーストローク(』私は最近ToUnicodeExユーザーを中断し、同様の問題に遭遇しましたまたはドイツ語キーボードの '+'キー修飾子)、希望の文字が表示された場合は、代わりに予期しない文字が画面に表示されます。
は右ToUnicodeExを実行する前に、ClearKeyboardBuffer方法とNejchyのコード@組み合わせることによって、私の問題を解決:
var isDeadKey = ClearKeyboardBuffer((uint)aKey, 0, hKd);
if (isDeadKey) return;
user32.ToUnicodeEx((uint)aKey, vkCode, keyboardState, characters, 10, (uint)0, hKd);
参考: http://www.siao2.com/2006/03/23/558658.aspx http://www.siao2.com/2006/04/06/569632.aspx
'ToUnicodeEx' を行い、あなたのコードで
private static bool ClearKeyboardBuffer(uint vk, uint sc, IntPtr hkl)
{
StringBuilder sb = new StringBuilder(10);
int rc = -1;
bool isDeadKey = false;
while (rc < 0)
{
rc = user32.ToUnicodeEx(vk, sc, new byte[256], sb, sb.Capacity, 0, hkl);
if (!isDeadKey && rc == -1) isDeadKey = true;
Console.Write(rc);
}
return isDeadKey;
}
彼のコードもご覧ください: https://stackoverflow.com/a/8705696/802848