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);
    // 回收站位置
, &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("\nFiles In Recycle Bin:\n");

)
    {
        // 遍历IEnumIDList对象,idlCurrent为当前对象
,&idlCurrent,&uFetched) == S_FALSE)
            break;
        // 获取回收站当前对象当前的路径,这里没有输出结果,读者可自行修改
        SHGetPathFromIDList(idlCurrent,  pszPath);
        // DisplayName,删除前的路径
        pisf->GetDisplayNameOf(idlCurrent,SHGDN_NORMAL,&strret);
        // 显示,printf可能会造成字符编码不正确。
,NULL,NULL);
        WriteConsoleW(hOutPut,strret.pOleStr,lstrlenW(strret.pOleStr),NULL,NULL);
        WriteConsoleW(hOutPut,L,NULL,NULL);
    }
    // 释放资源
    pMalloc->Free(pidlBin);
    pMalloc->Free(strret.pOleStr);
    pMalloc->Release();
    peidl->Release();
    pisf->Release();
    ;   
}

Shell应用之遍历回收站RecycleBin的更多相关文章

  1. 【转】Oracle回收站(recyclebin)

    我们都比较熟悉windows中的回收站,文件删除后放到回收站里还可以再复原.Oracle回收站的原理完全一样,只是实现的细节方面有些差异.另外回收站中只能回收表和相关的对象包括索引.约束.触发器.嵌套 ...

  2. windows shell api SHEmptyRecycleBin 清空回收站

    HRESULT SHEmptyRecycleBin( HWND hwnd, LPCTSTR pszRootPath, DWORD dwFlags ); hwnd 父窗口句柄 pszRootPath 将 ...

  3. ---Shell的数组遍历

    1.  一一读入:  read -a A < <(echo a b c d e f g) 2. 遍历输出

  4. shell脚本编写遍历某一目录下的所有文件

    遍历/root/321321/目录显示里面的所有文件 #!/bin/bash dir=`ls /root//` #定义遍历的目录 for i in $dir do echo $i done

  5. linux shell创建目录、遍历子目录

    1.创建目录 代码1: #!/bin/bash#如果没有tmp_dir目录则创建static_dir="/web/fyunw.com/static"if [ ! -d $staic ...

  6. Shell:如何遍历包含空格的文本

    Blog:博客园 个人 翻译自Looping Through a File that Contains Spaces – Bash for Loop 处理包含空格或特殊字符的文件是每个使用Linux的 ...

  7. Shell 脚本循环遍历日志文件中的值进行求和并计算平均值,最大值和最小值

    本文为博主原创,转载请注明出处: 最近在进行压测,为了观察并定位服务性能的瓶颈,所以在代码中很多地方加了执行耗时的日志,但这种方式只能观察,却在压测的时候,不太能准确的把握代码中某些方法的性能,所以想 ...

  8. 回收站(recyclebin)及回滚

    1. alter table table_name enable row movement; flashback table table_name  to timestamp  to_timestam ...

  9. shell位置参数的遍历

随机推荐

  1. 按钮CSS样式

      CreateTime--2017年5月5日11:23:18Author:Marydon 按钮CSS样式 实现效果: <input type="button" onclic ...

  2. JDBC 获取被插入数据的主键ID值

    除了用存储过程还有以下方法可以获取:     static int create() throws SQLException {     Connection conn = null;     Pre ...

  3. Eclipse默认编码格式设置方式

    看图即可 STEP ONE: STEP TWO: STEP THREE: STEP FOUR: 项目右击——>Properties 参阅: eclipse编码格式设置 - AlanLee(Jav ...

  4. WebService一些概念

    1.WebService,顾名思义就是基于Web的服务.它使用Web(HTTP)方式,接收和响应外部系统的某种请求.从而实现远程调用. 2.我们可以调用互联网上查询天气信息Web服务,然后将它嵌入到我 ...

  5. mysql和redis之间互相备份

    http://code.google.com/p/redisql/wiki/Examples 项目地址:https://github.com/JakSprats/predis/blob/master/ ...

  6. HTML5学习笔记 Geolocation(地理定位)

    HTML5 Geolocation(地理定位)用于定位用户的位置. 定位用户的位置 html5 Geolocation API用于获得用户的地理位置 鉴于该特性可能低侵犯用户的隐私,除非用户同意,否则 ...

  7. jquery判断元素的子元素是否存在

    jquery判断元素的子元素是否存在的示例代码. jquery判断子元素是否存在 一.判断子元素是否存在 //一级子元素 if($("#specialId>img").len ...

  8. atitit. 研发管理---如何根据自己的特挑选 产业、行业、职业、岗位与自己发展的关系

    atitit. 研发管理---如何根据自己的特挑选 产业.行业.职业.岗位与自己发展的关系 1. 产业及分类 1 2. 二.行业 2 3. 职业概念- 3 4. 职业划分 3 5. 职业兴趣分类 4 ...

  9. [c#]分析器错误消息: 发现不明白的匹配。

    (1)同样的变量名称 protected System.Web.UI.WebControls.Label lbltitle; protected System.Web.UI.WebControls.L ...

  10. android.animation(6) - AnimatorSet

    上几篇给大家分别讲了ValueAnimator和ObjectAnimator,相比而言ObjectAnimator更为方便而且由于set函数是在控件类内部实现,所以封装性更好.而且在现实使用中一般而言 ...