前提・実現したいこと
C#でスクリーンキーボードを作成しています。
英数字やひらがな、カタカナなどの単体の文字が送信できるまでは実装済みです。
例)「あ」、「ア」、「A」など
今回、実現したいのは、windows標準のスクリーンキーボードのように
IMEがひらがな入力の状態で入力できるようにしたいです。
例)「B」キー → 「A」キー → 「変換」キー で入力が「ば」になる
該当のソースコード
以下、SendInputを使用したソースです。
通常時はForms.Keysをshortでキャストしたものをinp.ki.wVkに割り当てていますが、
特殊キーは直接キーコードを入力しています。
INPUT inp = new INPUT(); // 押す inp.type = INPUT_KEYBOARD; inp.ki.wVk = (short)key; inp.ki.wScan = (short)MapVirtualKey(inp.ki.wVk, 0); inp.ki.dwFlags = ((isExtend) ? (KEYEVENTF_EXTENDEDKEY) : 0x0) | KEYEVENTF_KEYDOWN; inp.ki.time = 0; inp.ki.dwExtraInfo = 0; SendInput(1, ref inp, Marshal.SizeOf(inp)); System.Threading.Thread.Sleep(100); // 離す inp.ki.dwFlags = ((isExtend) ? (KEYEVENTF_EXTENDEDKEY) : 0x0) | KEYEVENTF_KEYUP; SendInput(1, ref inp, Marshal.SizeOf(inp));
試したこと
仮想キーコード表に従い、IME関係のキーコードを送信してもIMEが切り替わりませんでした。
補足情報(FW/ツールのバージョンなど)
.NET Fremework 4.5
VisualStudio2013
Windows7で開発
回答2件
あなたの回答
tips
プレビュー