zoukankan      html  css  js  c++  java
  • Shell应用之遍历回收站RecycleBin

     C++ Code 
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
     
    /*************************************
    * DWORD ListFileInRecycleBin()
    * 功能    遍历并显示回收站中的文件
    *
    * 参数    未使用
    **************************************/

    DWORD ListFileInRecycleBin()
    {
        CHAR pszPath[MAX_PATH];     
    // 保存路径
        // IShellFolder接口
        IShellFolder *pisf = NULL;
        IShellFolder *pisfRecBin = 
    NULL;
        
    // 获取“根”目录,桌面
        SHGetDesktopFolder(&pisfRecBin);
        
        IEnumIDList *peidl = 
    NULL;  // 对象遍历接口
        LPITEMIDLIST pidlBin = NULL;
        LPITEMIDLIST idlCurrent = 
    NULL;

        LPMALLOC pMalloc = 
    NULL;
        
    // 分配
        SHGetMalloc(&pMalloc);
        
    // 回收站位置
        SHGetFolderLocation(NULL, CSIDL_BITBUCKET, NULL0, &pidlBin);
        
    // 绑定回收站对象
        pisfRecBin->BindToObject(pidlBin,NULL,IID_IShellFolder,(void **) &pisf);
        
    // 列举回收站中的对象,得到IEnumIDList接口,包括SHCONTF_FOLDERS、
        // SHCONTF_NONFOLDERS、SHCONTF_INCLUDEHIDDEN类型的对象
        pisf->EnumObjects(NULL, SHCONTF_FOLDERS | SHCONTF_NONFOLDERS |SHCONTF_INCLUDEHIDDEN, &peidl);

        STRRET strret;
        ULONG uFetched;

        HANDLE hOutPut = GetStdHandle(STD_OUTPUT_HANDLE);
        printf(
    " Files In Recycle Bin: ");

        
    while(1)
        {
            
    // 遍历IEnumIDList对象,idlCurrent为当前对象
            if(peidl->Next(1,&idlCurrent,&uFetched) == S_FALSE)
                
    break;
            
    // 获取回收站当前对象当前的路径,这里没有输出结果,读者可自行修改
            SHGetPathFromIDList(idlCurrent,  pszPath);
            
    // DisplayName,删除前的路径
            pisf->GetDisplayNameOf(idlCurrent,SHGDN_NORMAL,&strret);
            
    // 显示,printf可能会造成字符编码不正确。
            WriteConsoleW(hOutPut,L" ",1,NULL,NULL);
            WriteConsoleW(hOutPut,strret.pOleStr,lstrlenW(strret.pOleStr),
    NULL,NULL);
            WriteConsoleW(hOutPut,L
    " ",1,NULL,NULL);
        }
        
    // 释放资源
        pMalloc->Free(pidlBin);
        pMalloc->Free(strret.pOleStr);
        pMalloc->Release();
        peidl->Release();
        pisf->Release();
        
    return 0;   
    }
  • 相关阅读:
    Navicat for Mysql安装及破解教程
    如何down掉IB交换机口
    pycharm替换文件中所有相同字段方法
    NAS、SAN、ISCSI存储
    Linux系统下安装rz/sz命令及使用说明
    python 实现查找某个字符在字符串中出现次数,并以字典形式输出
    python class用法
    zookeeper
    机器学习基础
    hive--数据仓库
  • 原文地址:https://www.cnblogs.com/MakeView660/p/8663998.html
Copyright © 2011-2022 走看看