色々な検証していると、どうしてもいろいろなものに目移りしてしまいます。( ダメな性格です。 一つのものに中々集中できません。) 以前、『Google Chrome Frame のパフォーマンスをみてみた』で、Chrome Frame を試していたことを思い出したら、BHO を作ってみたくなりました。
BHO ( Browser Helper Object ) とは、
Browser Helper Object(BHO) とはInternet Explorerで使用するプラグインを第3者でも作成することができるようにする仕組み及びその仕組みによって生成されたCOMの事である。1997年に Internet Explorer のバージョン4より実装された。
ほとんどのBHOはInternet Explorer の起動時に実行され、ブラウザのスタートページや検索ページ、ツールバーの設定、ユーザが閲覧したWebサイトの情報の収集、ポップアップの作成、お気に入りの登録などの機能をカスタマイズ、コントロールすることができる。また、いくつかのモジュールではブラウザーが本来表示することのできない異なったファイルフォーマットの形式の表示を可能とする。たとえばAdobe AcrobatのプラグインはPDFファイルを Internet Explorer 上で表示することを可能としている。他にもInternet Explorer版のGoogle ツールバーなども BHO で実装されている。
BHO をはじめとする、ブラウザ拡張に関してここを参照してみてください。ブラウザ拡張を開発する上で非常に大事なことが記載されています。
Important Because extensions run in-process with the browser process, they should not be written using managed code. For more information, see:
うぅ、これは大事ですね。ブラウザ拡張の機能を開発する場合は.NETFramework のようなマネージドな言語たちは使用すべきではないのですね。ネイティブな言語、すなわち C++ での開発が必要だということになります。下記のページを参照するとその理由がわかります。
- http://blogs.msdn.com/b/ie/archive/2010/10/07/add-on-performance-part-3-optimizing-add-on-startup-performance.aspx
- http://msdn.microsoft.com/en-us/magazine/ee819091.aspx
- http://blogs.msdn.com/b/oldnewthing/archive/2006/12/18/1317290.aspx
ブラウザ拡張の機能をマネージドで開発した場合、Common Language Runtime のバージョン衝突、ネイティブとマネージド間のスレッド モデルの違い、データ型等の問題が発生します。うーん、今は C# しか使ってないんですよね...C++ で開発するしかないんですね。C++ はかれこれ8年以上触っていません。思い出せるかなぁ。
それでは、BHO を開発してみましょう。開発環境は、メインマシンの Lenovo にはインストールされていないので、Windows Azure 上の Visual Studio 2013 を使用したいと思います。
Surface Pro 2 とかであれば、PC にインストールしておくのですが... Lenovo yoga 13 は ディスクが 128 G なので、Visual Studio をインストールするのは少し辛いのです。Surface とかあれば....
256G or 512G がほしいですね。できれば、512 G ですかね。うーん、予算が....
ワイヤレスキーボードになるアクセサリもあるんですね。いいですね。このスタイルにしたいです。Surface Pro 3 とかリリースされたら、キーボードがデフォルトでワイヤレス対応されていそうな気がしますが...
こんなキーボードもリリースする予定なんですね。blades ( ブレード ) というものらいしです。
※参考URL
http://news.mynavi.jp/articles/2013/10/24/surface2/index.html
Surface Pro 2 -- from Microsoft - YouTube
この動画見ちゃうと、余計にほしくなりますね。うう.... 本題から、かなり脱線してしまいました。もう夜遅いので、C++ する気力が残っていません。実際のプログラミングは今週末にしたいと思います.....( ああ、結局ほとんど進まなかった.... )