IME の入力モードの変更ほうほうについて への返答
投稿で使用できる特殊コードの説明。(別タブで開きます。)
以下の返答は逆順(新しい順)に並んでいます。
投稿者 魔界の仮面弁士  (社会人)
投稿日時
2020/6/23 22:40:39
> ImmSetConversionStatus / SetInputScope などの API 処理が必要になると思います。
…と書いてみたものの、 SetInputScope では要件を満たせなさそうです。
この API に渡せる値は InputScope.h で定義されているのですが、
見た限り、ローマ字入力制御については含まれていないように見えました。
https://docs.microsoft.com/en-us/windows/win32/api/inputscope/ne-inputscope-inputscope
上記のうち、主要な値については参照設定:PresentationCore の InputScopeNameValue でも定義されています。
https://docs.microsoft.com/ja-jp/dotnet/api/system.windows.input.inputscopenamevalue
一方、 ImmSetConversionStatus / ImmGetConversionStatus API の方は、
IME_CMODE_ROMAN のビットフラグが使えるかもしれません。
ただし、最近の OS でも使えるかは分かりません。(未調査)
特に Win10 v2004 では、Microsoft IME が刷新されていますしね…。
…と書いてみたものの、 SetInputScope では要件を満たせなさそうです。
この API に渡せる値は InputScope.h で定義されているのですが、
見た限り、ローマ字入力制御については含まれていないように見えました。
https://docs.microsoft.com/en-us/windows/win32/api/inputscope/ne-inputscope-inputscope
上記のうち、主要な値については参照設定:PresentationCore の InputScopeNameValue でも定義されています。
https://docs.microsoft.com/ja-jp/dotnet/api/system.windows.input.inputscopenamevalue
' Imports System.Runtime.InteropServices
<DllImport("Msctf", PreserveSig:=False)>
Private Shared Sub SetInputScope(hwnd As IntPtr, inputscope As System.Windows.Input.InputScopeNameValue)
End Sub
一方、 ImmSetConversionStatus / ImmGetConversionStatus API の方は、
IME_CMODE_ROMAN のビットフラグが使えるかもしれません。
ただし、最近の OS でも使えるかは分かりません。(未調査)
特に Win10 v2004 では、Microsoft IME が刷新されていますしね…。
#define IME_CMODE_ALPHANUMERIC 0x0000
#define IME_CMODE_NATIVE 0x0001
#define IME_CMODE_CHINESE IME_CMODE_NATIVE
#define IME_CMODE_HANGUL IME_CMODE_NATIVE
#define IME_CMODE_JAPANESE IME_CMODE_NATIVE
#define IME_CMODE_KATAKANA 0x0002 // only effect under IME_CMODE_NATIVE
#define IME_CMODE_LANGUAGE 0x0003
#define IME_CMODE_FULLSHAPE 0x0008
#define IME_CMODE_ROMAN 0x0010
#define IME_CMODE_CHARCODE 0x0020
#define IME_CMODE_HANJACONVERT 0x0040
投稿者 魔界の仮面弁士  (社会人)
投稿日時
2020/6/23 17:49:45
ImmSetConversionStatus / SetInputScope などの API 処理が必要になると思います。
http://www7a.biglobe.ne.jp/~tsuneoka/win32tech/7.html
https://social.msdn.microsoft.com/Forums/windows/ja-JP/405e7da1-c2b8-4057-a568-8a20c33af181/
http://www7a.biglobe.ne.jp/~tsuneoka/win32tech/7.html
https://social.msdn.microsoft.com/Forums/windows/ja-JP/405e7da1-c2b8-4057-a568-8a20c33af181/
投稿者 N88-Basic  (社会人)
投稿日時
2020/6/23 10:01:33
Windows 10 Home(64) Ver 2004 + Visual Studio 2019 にてアプリを作成しておりますが、
IME の入力モードを [ローマ字入力] と [かな入力] の切り替え方法がわかりません。
SendKeys で可能と思ったのですが、「カタカナ/ひらがな/ローマ字」 キーの設定に関する情報が見つかりませんでした。
[ALT] + 「カタカナ/ひらがな/ローマ字」を操作すれば済むことですが、この操作が上手くできな人がいるのでアプリでできないかと考えています。対象マシンは現在は Ver1909 ですが、そのうち Ver2004 が降ってきそうです。
情報をお持ち下さればご教授ください。
IME の入力モードを [ローマ字入力] と [かな入力] の切り替え方法がわかりません。
SendKeys で可能と思ったのですが、「カタカナ/ひらがな/ローマ字」 キーの設定に関する情報が見つかりませんでした。
[ALT] + 「カタカナ/ひらがな/ローマ字」を操作すれば済むことですが、この操作が上手くできな人がいるのでアプリでできないかと考えています。対象マシンは現在は Ver1909 ですが、そのうち Ver2004 が降ってきそうです。
情報をお持ち下さればご教授ください。
また、返信が遅くなり申し訳ありません。
API に関しては、数度の経験しかないのでどういうコードを組めばいいのか試行錯誤している状態です(特に特定のアプリに対するものではない、Windows 全体への設定なるため)。
また、ご指摘のあった Windows 10 V2004 でも、旧バージョンの利用設定もあるようですが開発マシンも Ver 2004 にしてから一部の機能(IME以外)が不安定で、まだまだ、道のりは遠そうです。
色々と試してから、改めて、ご報告させていただきます。
今後ともよろしくお願いします。