世界線航跡蔵

Mad web programmerのYuguiが技術ネタや日々のあれこれをお送りします。

2004年06月17日

IEツールバー開発

お仕事で調査中。めもめも。

要するに、IEツールバーを作るには次のようにすればいいらしい。IE5以降でサポートされる。

  • IObjectWithSite, IDeskBand, IPersistStream を実装したcoclassをつくる。
  • coclassはinproc serverで利用できなくてはならない。つまりは、COMサーバーはDLLでないと駄目。とにかく、そういう形でレジストリにcoclassを登録する。
  • それから、HKEY_LOCAL_MACHINE\software\microsoft\Internet Explorer\Toolbarに、"{coclass のCLSID}"という名前の値を登録する。型や中身はどうでもいいみたい?

IObjectWithSiteの実装はこんな感じ。

  • ツールバーがactivateされるとき、 IObjectWithSite#SetSite が呼ばれる。パラメータのIUnknownインターフェースは、IOleWIndowをquery可能なので、これを使ってツールバーの親となるウィンドウの情報を取得する。MSDNのサンプルでは、このタイミングでツールバー本体のウィンドウを生成している。
  • また、IInputObjectSiteもquery可能なので、あとで入力を処理するときにこれを使う。
  • それから、単にツールバーとして表示されると言うだけでなく実質的な機能を提供するなら、このIUnknownでIWebBrowser2をqueryするのは必須。
  • IObjectWithSite#GetSiteは単にSetSiteで渡されたIUnknownのQueryInterfaceに転送すればいいらしい。

IPersistStreamは、ツールバーの状態を保存するために適切なタイミングでIEがメソッドを呼んでくれるので、それを考えてよしなに実装。空実装してもとりあえずは問題なし。

IDeskBand::GetBandInfoはバーの大きさやらなんやらの情報を提供するMSDNのサンプルみたいな感じで適当に。

トラックバック

http://yugui.jp/articles/104/ping
IEツールバー開発 (情報システム部)
IEツールバー開発。Web上で探してもなかなかドキュメントが見つからない。去年何とか探し当てて作ったことがあった。必要な開発ツールは、Visual Studio .NET。私はC#で作った。 参考にしたサイトはこちら→「IE ToolbarをC#で作る」(「塚田浩二のWebサイト」より) 私...

コメント

blog comments powered by Disqus

ご案内

前の記事
次の記事

タグ一覧

過去ログ

  1. 2016年07月
  2. 2016年01月
  3. 2015年09月
  4. 2015年08月
  5. 過去ログ一覧

フィード

フィードとは

その他

Powered by "rhianolethe" the blog system