IDocHostUIHandler::GetExternal() で 拡張した自分の IDispatchインターフェースを WebBrowserコントロール側に渡してやると、window.external を介してカスタムプロパティ、カスタムメソッドを追加できるようだ。
BHOがロードされた時にこの仕組みを実装してやることで、右クリックとの橋渡しができそう。
【BHOのロード時】IDocHostUIHandlerを拡張
【右クリック時】MenuExtに追加したスクリプトからwindow.external.xxxx()で拡張したメソッドを呼び出し
【BHO】IDispatchで呼び出されたメソッドを処理(印刷テンプレートを使った印刷)
のような感じでできそうな感触。
と思ったけどまだIDocHostUIHandlerを取得して拡張する方法がよくわかってない。もう少し調べないと・・・