Internet Explorerの履歴をクリアする

IEの履歴を削除するにはIUrlHistoryStg2インターフェースを利用する。このCOMは実装されたのが比較的最近のためInternet Explorer 5.5以降、かつ、Windows Me、Windows 2000以降で利用できる。Windows 95/98/NT 4.0では利用できないので注意。

また、バグによりInternet Explorer 6 SP1でWindows Updateをしていない場合は実行した日の履歴が削除されないことがあるらしい。

#include "mshtml.h"
#include "shlguid.h"
#include "urlhist.h"


//
//	Internet Exploreの履歴を削除する
//
// IE5.5以降対応
// Windows Me/2000以降対応
//
bool	ClearInternetExplorerHistry(void)
{
	HRESULT		hr;
	IUrlHistoryStg2*	pIUrlHistoryStg2; 

	hr = ::CoCreateInstance(CLSID_CUrlHistory,NULL,CLSCTX_INPROC_SERVER,IID_IUrlHistoryStg2,reinterpret_cast<void**>(&pIUrlHistoryStg2));
	if(FAILED(hr) || pIUrlHistoryStg2 == NULL)
		return	false;

	hr = pIUrlHistoryStg2->ClearHistory();

	pIUrlHistoryStg2->Release();

	return	SUCCEEDED(hr) ? true : false;
}


void	Test(void)
{
	bool	ret;

	//COM初期化
	::CoInitialize(NULL); 

	ret = ClearInternetExplorerHistry();

	if(ret)
		::MessageBox(NULL,_T("IEの履歴を空にしました"),_T(""),MB_OK);
	else
		::MessageBox(NULL,_T("IEの履歴を空にできませんでした"),_T(""),MB_OK);

	//COM開放
	::CoUninitialize(); 
}

プロジェクトファイルをダウンロード


カテゴリー「Internet Explorer」 のエントリー