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. 〖Android〗/system/etc/fallback_fonts.xml

    <?xml version="1.0" encoding="utf-8"?> <!-- Fallback Fonts This file sp ...

  2. android源码如何起步与阅读方法

    显然Eclipse不是阅读Android源码的好工具,不流畅,搜索低效,继承性关系/调用关系都无法有效查看.推荐Source Insight,在这个工具帮助下,你才可以驾驭巨大数量的Android 源 ...

  3. 【RESTful风格】软件接口设计中RESTful风格

    REST = Representational State Transfer 表述性状态转移,是一种软甲接口设计风格.总之就是一种风格 REST基于:HTTP.HTML.JSON.XML.URI 这些 ...

  4. Linux命令-文件处理命令:more

    分页查看文件命令,区别于翻页查看文件命令less more /etc/services 查看etc目录中的services文件 注意:空格或f是翻页,回车Enter是换行,q或Q是退出.

  5. 在spring+springMvc+mabatis框架下集成swagger

    我是在ssm框架下集成swagger的,具体的ssm搭建可以看这篇博文: Intellij Idea下搭建基于Spring+SpringMvc+MyBatis的WebApi接口架构 本项目的GitHu ...

  6. 峰值因子,峰均比,Reference Level

    峰值因子(CREST Factor,CF)与 峰均比( Peak-to-Average Ratio,PAR) 对于一个波形信号,在一段时间内信号幅度峰值比上信号幅度的有效值即为信号的峰值因子,它表征了 ...

  7. SortedDictionary<TKey,TValue>正序与反序排序及Dicttionary相关

    SortedDictionary<TKey,TValue>能对字典排序 using System; using System.Collections.Generic; using Syst ...

  8. layui 数据表格 根据值(1=业务,2=机构)显示中文名称

    数据是用ThinkPHP5操作 类型是固定4个, 用layui templet - 自定义模板 方法一: {field:'type', title: '类型', width: 200, templet ...

  9. Spring Cloud(二):Spring Cloud Eureka Server高可用注册服务中心的配置

    前言 Eureka 作为一个云端负载均衡,本身是一个基于REST的服务,在 Spring Cloud 中用于发现和注册服务. 那么当成千上万个微服务注册到Eureka Server中的时候,Eurek ...

  10. Python中的strip()的理解

    在看到Python中strip的时候产生了疑问 strip() 用于移除字符串头尾指定的字符(默认为空格) 开始测试: >>> s = 'ncy_123.python' >&g ...