超難物だったaimemonのバージョンアップがやっとできました。
新機能 §
虹色の枠は、最も近いモニタのコーナーに出る他、フォラグラウンドウィンドウと、フォーカスのあるウィンドウの周囲も選択できるようになりました。
広いモニタを使っていると虹色を見落とすという状況が解消されます。
バグ取り §
マルチモニタやリモートデスクトップで表示の異常が出ていた他、スタートアップ経由で起動するとタスクバーに名前が出てしまう等の問題もありました。
これらの問題に、全て決着をつけたはず……です。
超難物でした。
なぜ難しいのかというと、
- 他のプロセスにフックDLLを忍び込ませ
- そのDLLとプロセス境界越えの通信を行い
- プロセス間で非同期にメッセージが飛び交う
という状況が起きていたためでした。
その結果として、全く違う箇所が原因であるかのように誤認させる状況も多発して、かなり回り道をさせられました。
ちなみに、おかしな挙動の大半は、自分自身宛のIMEメッセージも処理してしまったことから引き起こされたものでした。これを直すだけで、極めて安定性が高まりました。
もう1つ、「枠線のゴミ」が残る問題は、MoveWindow APIの最後のパラメータをFALSEからTRUEに直すだけで解消されました。リージョンを設定したウィンドウを動かすときは、FALSEではダメなのかもしれません。ちなみに、この問題は環境依存です。テストに使ったWin XPマシンでは起こりましたが(ゴミが残った)、メインのVistaマシンでは起こっていません。
あとは、リージョンオブジェクトの削除忘れを解消しているので、GDIリソースへの圧迫は少なくなっているはずです。(NTカーネルのGDIでは分かりにくいかもしれませんが)
脳噛ネウロの気分が分かった §
謎をご馳走として食らう脳噛ネウロの気分が分かりました。
今回、紛れもなく私は謎の探索を「ご馳走」として受け取っていました。
それは、どのように奇怪に見えようとも原因は必ずあるという信念によって裏付けられたものです。
特に今回の「謎」は、明らかに筋の通った原因があると思われる極上の「ご馳走だ」というのが始める前の印象でしたが、それは当たりでした。他の問題の影に隠れた意外な「真犯人」を引っ張り出して、自白させました。
でも楽しいのはそこまでで、後の作業はイマイチ乗らなかったのも事実ですね。