ratio - rational - irrational

« ECMAScript | Main | プログラム設計 »

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のサンプルみたいな感じで適当に。



トラックバック

この記事のトラックバックpingのURL:
http://idm.s9.xrea.com/blog/mt-tb.cgi/102

Ping元:IEツールバー開発

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

コメント

新しくコメントをつける

よくわからない理由により、コメントが即座には反映されないかもしれませんか゛、ボタンを押して元の画面に戻ってきたならたぶん正しく送信されています。




blog操作

検索


カテゴリー

このブログについて

あわせて読みたい

follow yugui at http://twitter.com
© 2004 Yugui

Powered by Movable Type 3.2-ja-2