IMEサポート機能#2
真魚とGoogle日本語入力とタブマンコは相性が悪いことに気がついた。
最近のタブマンコは、グローバルフックを使ってマウスホイールのリダイレクトもやっているのだが、
真魚にGoogle日本語入力で文字入力し、未確定文字が表示されると同時に、
タブマンコのリダイレクト機能が死ぬ。
そして、そのリダイレクトの処理を行っているDLLが、タブマンコを終了させても削除できなくなり、
いったんログオフしないといけなくなる。
このリダイレクトのやり方は一つしかないので、どのアプリでも同じ事をしているはずで、
たぶんタブマンコのバグって事ではないと思う。
試してはいないが、真魚にGoogle日本語入力を使えば、タブマンコ以外のリダイレクトも死ぬはず。
真魚以外の、たとえばブラウザのクロームにGoogle日本語入力を使ってもリダイレクトは死なないし、
ATOKかMS-IMEで真魚に文字入力しても死なない。
真魚はATOKかMS-IMEだけを想定して作ったし、Google日本語入力も真魚での利用は想定してない。
お互いに、想定してないアプリでの使用によって、何かがぶつかり合って、
リダイレクトを実現しているグローバルフックを吹っ飛ばしてるんだろう。
では、マウスホイールのリダイレクトか、真魚か、Google日本語入力か、どれの使用をあきらめるかだが、
そりゃ当然に、まだ使い始めて試してる所のGoogle日本語入力をあきらめるに決まってる。
いずれアップデートされて、この問題が起きなくなる可能性を持っているのもGoogle日本語入力だけで、
今は標準的なIMEと同じ挙動を実現してないけど、いつかフィットすることがあるかも知れない。
それまでGoogle日本語入力を使う事はないだろう。
しかしこのIMEサポート機能はGoogle日本語入力に乗り換える前提で、
そのために使う予定で作っていたわけだが、これでもういらない機能になってしまったが、
まぁ少しは動くようになったので、もうちょっと探求するつもりでいる。
一番問題なのは、オンオフ切り替えを感知できない事だったのだが、
Google日本語入力では、グローバルフックでWM_IME_NOTIFYを捕まえて切り替えを感知出来たのだが、
真魚への文字入力でリダイレクトと一緒に死んで感知出来なくなるから、この方法は使えない。
ATOKやMS-IMEに切り替えたところ、リダイレクトは死なないが、WM_IME_NOTIFYを捕まえられない。
なるほど、Google日本語入力はこのWM_IME_NOTIFYの使い方が他のIMEと違うせいで、
それを想定してないアプリで使うと、メッセージを監視するようなDLLをパンクさせるらしい。
もともとGoogle日本語入力と併用しようと思ったIMEサポート機能ではあるが、
実装はATOKやMS-IMEで正しく動くようにし、Google日本語入力がそれらに合わせるまで待つつもり。
おまえがおれにあわせろって、真魚は言えないがMS-IMEは言えるだろ。