Firefox ってさ、調べた限りだと IE の COM みたいな感じで他所で動いてるやつに介入して操作するの、積極的にはオープンにしてないんだよね。
やりたいこととしては Firefox でポインタ下にある単語を他所で取りたいってんだけど、よくそのへんで配布してる アドオンじゃあそれはできない。アドオンは基本的に Firefox という環境の中で完結していて、C++のインタフェースが無いのだ。そのへんにあるポップアップ辞書のアドオンは、全部その完結した環境でやりくりしてるわけ。というわけで、プラグインを作ることに。こいつはFlashプラグインやPDFプラグインが示すように、C++を叩いて、つまり外に出て行ける。
というわけで、
- ポインタ下にある単語を特定する部分にアドオン
- アドオンで得た文字列を外で受け取るインタフェース部分にプラグイン
という構成にしないとダメそうなのだ。で、試行錯誤の上、ようやくプラグイン部分が完成した。文字列を受け取って、WinAPI の PostMessage で1文字ずつBROADCAST しちゃうっていう方法。あとは、アドオン部分は既存のアドオンを適当に使い回せばなんとかいけそうだぜ。あー疲れた。