Windows 7のタスクバーのプログレスバーに手こずる
今日は涼しくなってきた夕方からC#で書いているファイル同期ソフトMulSyncをWindows 7のタスクバーのプログレスバーに対応させるべくいろいろとやってみたが、どうにもこれが動かない。
結局、以下の間違いを直してようやく動くようになった。
- COMといっても所詮は渡された関数テーブルを呼ぶということに帰結するというのに、メソッドの書き順を間違えていた。
- 中途半端に見たサンプルから引っ張ってきたウインドウハンドルの渡し方を間違えていた。
- ITaskbarList3インタフェースを書く際にITaskbarList→ITaskbarList2→ITaskbarList3と継承していたが、これもまずかった。
何で、こうなったかというとWindows API Code Packを使うのを避けるためにPInvoke.NETのコードを持ってきたためである。
素直にWindows API Code Packを使うとDLLも配布する必要があり、面倒になるから手書きしたのだが、それが仇になった格好である。
幸い、PInvoke.NETはWikiベースなので、ITaskbarList3のC#の定義を置き換えてやった。
これでばっちりかな。