熊「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が呼ばれてる回数見た感じでは、おそらく・・・・
今度一度ちゃんと調査します


HOME    次へ


コメントスペース