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();
}