Windows Shell外壳编程基础,优雅枚举文件的开端

易语言 2020-06-30 21:39:46

Windows Shell外壳编程基础,优雅枚举文件的开端

使用IID_IEnumIDList->Next()指令读取文件夹的pItem(注意装换出的是Shell路径),接着再用SHGetDataFromIDListA读出文件基本信息就OK。
浏览一个文件夹:
我们知道,在win32中是以外壳名字空间的形式来组织文件系统的,在外壳名字空间里的每一个对象(注)都实现了一个IShellFolder的接口,通过这个接口我们可以直接查询或间接得到其他相关的接口。
注:这里的对象指的是外壳名字空间中的一个节点,对象有可能是一个文件夹,有可能是一个文件,也有可能是一个虚拟文件夹,例如:我的电脑,网上邻居,控制面板等
获取“桌面”
首先我们必须了解,在外壳编程中,要使用 PIDL 路径代替普通路径(如果对 PIDL 不熟悉,请看Windows外壳名字空间的浏览)。

“桌面”是最顶级的文件夹,外壳名字空间中其他各项都可以用从“桌面”开始的 PIDL 加以表示。

如何获取“桌面”的 PIDL 和其 IShellFolder 接口呢,可以通过 API SHGetDesktopFolder。
获取其他文件夹:
这里我首先声明一下:由于我的水平有限,代码使用的是SHBindToParent()来取接口,非原贴中的BindToObject,SHBindToParent则会取得当前文件的父文件夹的IShellForlder接口,所以枚举时会枚举父文件夹的文件,至于更多??那我不做解释了。