blog

枪手亨利

博客园 首页 新随笔 联系 订阅 管理
这通常是最久的历史纪录,但是你可以修改部分代码来删除需要的项目。  
    //   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();  
    }
posted on 2006-06-05 12:36  henry  阅读(705)  评论(0)    收藏  举报