删除一个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();
}
// 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();
}
相关文章推荐
- 遍历删除一个目录下所有文件的函数
- 编译u-boot时候,make distclean 出现rm:无法删除,****是一个目录
- 删除一个目录下的所有文件,但保留一个指定文件
- Delphi 删除或清空一个目录(包含多级)
- 找出一个目录下所有文件七天未修改过的文件并且删除
- AIX link ln 将一个目录链接到另外一个文件系统的目录 -- ln link 创建与删除
- 删除一个文件夹目录并保留根目录
- windows下删除某一个目录及自身的BAT脚本
- linux下删除某一个目录及自身的bash脚本
- 在指定目录下删除一个空目录
- 批量删除一个目录下的文件
- PHP 删除一个目录及目录下的所有文件的函数代码
- Java基础---Java---IO流-----File 类、递归、删除一个带内容的目录、列出指定目录下文件夹、FilenameFilte
- Linux上怎么快速删除一个目录
- Linux中想进入一个目录、 在目录下创建文件、在文件内部删除文件 各需要什么权限?
- Linux下PHP删除一个目录下所有文件夹和子目录
- WinXP下如何删除非空目录(一个可行的特殊方法)
- 写了一个删除svn的工具,可以删除文件夹下的所有.svn目录
- IE历史记录查询及删除工具IE History View使用浅析