レス数が1スレッドの最大レス数(1000件)を超えています。残念ながら投稿することができません。
ユーザーサポート
-
はじめまして。大変心地よく nodoka を使っております。
1つ困ったことがありまして、お伺いしたいことがあります。
現在、nodoka を使用して IME 制御を行っております。
key *IC-C-Yen = &SetImeStatus(on)
key *IC-C-CircumflexAccent = &SetImeStatus(off)
このように IME のオンオフを切り替えるように設定しています。
これ自体は正常に動作しているようなのですが、IME を制御するアプリケーションで
この切り替えが動作しなくなることがあります。
現在その現象を確認しているのは bluewind というアプリケーションと、
自作アプリケーションです。
その現象とは、あるタイミングでアプリケーションが自動的に IME をオフにすると
その後 nodoka SetImeStatus(on) が有効にならないというものです。
半角/全角キーだとオンオフが可能で、その後は SetImeStatus(on) が有効になります。
自作のほうは C# + .NET Framework で次のようなコードで実現しています。
IntPtr ime_handle = (IntPtr)ImmGetContext(this.Handle);
uint conv = 0, sent = 0;
ImmGetConversionStatus(ime_handle, ref conv, ref sent);
int result = ImmSetConversionStatus(ime_handle, IME_CMODE_ALPHANUMERIC, sent);
IME がオンのときにこのコードを実行するとオフになります。
この後 SetImeStatus(on) を行ってもオンになっていないように見えます。
ただ、そのときもう一度上のコードを実行し
ImmGetConversionStatus(ime_handle, ref conv, ref sent);
直後の conv の値を調べると
IME_CMODE_NATIVE | IME_CMODE_FULLSHAPE | IME_CMODE_ROMAN (数値では25)
となっており、IME がオンの状態と同じです。
半角/全角キーで正常に動作し、nodoka の SetImeStatus(on) で意図通り動作しないので、
nodoka ではどのように制御しているのか教えていただけないでしょうか?
以上です。
|
|
掲示板管理者へ連絡
無料レンタル掲示板