「COMとは友達になれそうにない」
トラベルログを取る準備
更新に少し間が空きました
なんかデバッグモードでYahooのニュースを見ると、エラーが起きる……
他のページでは発生しない上に、クマ専ツールバーを立ち上げなくても起きる
なんだろうってことをずっと調べて挫折してました
後日追記、IEをデバッグモードで動かしてF12を押すと発生するらしい
F12ってなに?
まぁ、それは放置して、前回の実装で、なんとなく標準のボタンっぽいものはできました
でも、使ってみると何かが足りません
何が足りないのでしょう
「一言で言えば、何もかも足りない」
そうです、戻るボタンの戻り先が少ないんです
通常の戻るボタンは、ドロップダウンが付いて、履歴を一気にさかのぼれます
というわけで、今回はブラウザの履歴を取得する手段を紹介します
ITravelLogStgの紹介
IEの履歴を引っ張り出すには、ITravelLogStgを使います
どうもMS様は、IEの履歴を指して、トラベルログ(Travel Log)と呼んでらっしゃるようです
詳しくは、こちら
http://msdn.microsoft.com/en-us/library/aa768366%28VS.85%29.aspx
「英語読むのめんどくさい」
日本語の資料はあまりないです
VB系の解説は少し見かけた気がしますが、VBはやったことないのでピンとこなかった
やること
とりあえずKumaBarBand.cppでIServiceProvider取ってるところで、
噂のITravelLogStgを取得します
書き方は、こんな感じ
//ITravelLogStgの取得
CComPtr<ITravelLogStg> spTravelLogStg;
if ( FAILED ( spServiceProvider->QueryService(IID_ITravelLogStg,&spTravelLogStg)) )
return E_FAIL;
IWebBrowser2を取った時と一緒ですね
で、使うときもIWebBrowser2と同じように、
ToolbarWindow.hのメンバ変数を追加して、取得したITravelLogStgを放り見ます
IWebBrowser2を使ってた時は、Attachで渡してましたが、
どうもこれをすると、デバッグモードでブラウザ落とす時にエラーが出たので、
普通に代入しています
AddRefとReleaseの回数は釣りあってるんだけどなぁ
ちと、この辺のソースは揺れるかもしれません
ソース
改修したソースはこんな感じです
とりあえず、ITravelLogStgを取っただけです
トラベルログを使うために、tlogstg.hなるものをincludeしてます
・KumaBarBand.cpp
・ToolbarWindow.h
「これ、ちゃんとReleaseされてんのかなぁ」
Releaseが呼ばれてる回数見た感じでは、おそらく・・・・
今度一度ちゃんと調査します
コメントスペース