BHO

いまいち。ベーグルの穴からソースが…


IEの印刷テンプレートを使う方法について、shdoclc.dllに入っている標準のテンプレートファイルを書き換える方法を試していたが、これだと汎用のプログラムを作ることが難しい。

  • 流通しているshdoclc.dllにはいくつかのバージョン違いがあると思われる
  • 勝手に書き換えたshdoclc.dllを配布するのはライセンス上、セキュリティ上の問題がある


もっと手軽にできる方法がないか考えて、そういえばBHO(Browser Helper Object)というのがあったなぁーと思い出した。
マルウェア御用達の・・・
思えば初めてBHOという言葉を知ったのはHijackThis(一見うさんくさい名前だが、マルウェア検出に使える便利ソフト)だった。


改めてBHOの解説を読み直してみると、IEに寄生してIWebBrowser2にアクセスできるらしいので、どうやら印刷テンプレートを使った印刷に流用ができそうだ。


問題は、COMとかATLとか私の知識の範囲外なこと・・・


私は古いタイプの人間なのでコンピュータ言語といえばABCくらいで進化が止まっている。

  • A:Assembler(Z80,x86,ARM)
  • B:BASIC(Visualなヤツは少しだけ。.netはしゃべれません)
  • C:C Language。C++COBOLは読むだけなら。

あとは最近やっとJavaScriptが書けるようになったくらいだ。(感覚としてC+BASICっぽいので比較的手が付けやすかった)


でもまあBHOの解説にあるサンプルをコピペ→ビルドエラー→適当に修正を繰り返しつつ何とかBHOのスケルトンは動くようになった。意外と何とかなるもんだ・・・。
無事IWebBrowser2インターフェースも取得でき、標準Internet Explorerから印刷テンプレートを使った印刷もできることを確認。


次の目標は、右クリックから呼び出せるようにする、とかかな。たぶんできると思うけどやり方をこれから調べないといけないな・・・
今はとりあえずサンプルコードの流用なので、DISPID_DOCUMENTCOMPLETE(読み込み完了イベント)が来ると勝手に印刷が呼び出されるというわけの分からない実装になってます(汗


あと残念ながら私が愛用してるDonutRAPTはBHO対応してないっぽい。そういわれてみればGoogleツールバーも対応してないしね。