您的位置:首页 > 其它

删除一个IE历史纪录目录中顶层目录的第一项

2006-06-05 12:36 246 查看
这通常是最久的历史纪录,但是你可以修改部分代码来删除需要的项目。
// Error checking minimized for clarity.
void DeleteUrlFromHistoryShell()
{
HRESULT hr;

// Call this if needed.
CoInitialize( NULL ;

IShellFolder* pDesktopFolder = NULL;
IMalloc* pMalloc = NULL;

hr = ::SHGetMalloc(&pMalloc);

// Get desktop folder.
hr = ::SHGetDesktopFolder(&pDesktopFolder);

// Get the history folder.
ITEMIDLIST* pidlHistoryFolder = NULL;
hr = ::SHGetSpecialFolderLocation(NULL, CSIDL_HISTORY, &pidlHistoryFolder);

// Get the IShellFolder of the history folder.
IShellFolder* pHistoryFolder = NULL;
hr = pDesktopFolder->BindToObject(pidlHistoryFolder, NULL, IID_IShellFolder, (void**)&pHistoryFolder);

// Enumerate the history items.
IEnumIDList* pHistoryEnum = NULL;
hr = pHistoryFolder->EnumObjects(NULL, SHCONTF_FOLDERS | SHCONTF_NONFOLDERS, &pHistoryEnum);

ITEMIDLIST* pidl = NULL;
ULONG fetched = 0;

hr = pHistoryEnum->Next(1, &pidl, &fetched);

if (SUCCEEDED(hr))
{
const ITEMIDLIST* pidl2 = pidl;

// Get the IContextMenu interface.
IContextMenu* pContextMenu = NULL;
hr = pHistoryFolder->GetUIObjectOf(NULL, 1, &pidl2, IID_IContextMenu, NULL, (void**)&pContextMenu);

if (SUCCEEDED(hr))
{
CMINVOKECOMMANDINFO pCommandInfo = { 0 };

pCommandInfo.cbSize = sizeof(CMINVOKECOMMANDINFO);
pCommandInfo.lpVerb = _T("delete";
pCommandInfo.fMask = CMIC_MASK_FLAG_NO_UI; // has no effect
hr = pContextMenu->InvokeCommand(&pCommandInfo);
}

pContextMenu->Release();
}

pHistoryEnum->Release();
pHistoryFolder->Release();
pMalloc->Release();
pDesktopFolder->Release();
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: