1 - 基础,浏览一个文件夹
我们知道,在win32中是以外壳名字空间的形式来组织文件系统的,在外壳名字空间里的每一个对象(注)都实现了一个IShellFolder的接口,通过这个接口我们可以直接查询或间接得到其他相关的接口。
(注:这里的对象指的是外壳名字空间中的一个节点,对象有可能是一个文件夹,有可能是一个文件,也有可能是一个虚拟文件夹,例如:我的电脑,网上邻居,控制面板等)
在C#中,我们这样定义 IShellFolder 接口:
![(C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹 (C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuc2h1emhpZHVvLmNvbS8lRTUlQUQlQTYlRTQlQjklQTAvd2luZG93cyVFNSVBNCU5NiVFNSVBMyVCMyVFNyVCQyU5NiVFNyVBOCU4Qi8oQyMpV2luZG93cyBTaGVsbCDlpJblo7PnvJbnqIvns7vliJcxIC0g5Z+656GA77yM5rWP6KeI5LiA5Liq5paH5Lu25aS5IC0g5p+g5qqs55qEIC0g5Y2a5a6i5ZutX2ZpbGVzL0V4cGFuZGVkQmxvY2tTdGFydC5naWY%3D.YfW2WFVD&67F'Bv?w=700&webp=1)
![(C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹 (C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuc2h1emhpZHVvLmNvbS8lRTUlQUQlQTYlRTQlQjklQTAvd2luZG93cyVFNSVBNCU5NiVFNSVBMyVCMyVFNyVCQyU5NiVFNyVBOCU4Qi8oQyMpV2luZG93cyBTaGVsbCDlpJblo7PnvJbnqIvns7vliJcxIC0g5Z+656GA77yM5rWP6KeI5LiA5Liq5paH5Lu25aS5IC0g5p+g5qqs55qEIC0g5Y2a5a6i5ZutX2ZpbGVzL05vbmUuZ2lm.YfW2Rv?w=700&webp=1)
using System;
![(C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹 (C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuc2h1emhpZHVvLmNvbS8lRTUlQUQlQTYlRTQlQjklQTAvd2luZG93cyVFNSVBNCU5NiVFNSVBMyVCMyVFNyVCQyU5NiVFNyVBOCU4Qi8oQyMpV2luZG93cyBTaGVsbCDlpJblo7PnvJbnqIvns7vliJcxIC0g5Z+656GA77yM5rWP6KeI5LiA5Liq5paH5Lu25aS5IC0g5p+g5qqs55qEIC0g5Y2a5a6i5ZutX2ZpbGVzL05vbmUuZ2lm.YfW2Rv?w=700&webp=1)
using System.Collections.Generic;
![(C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹 (C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuc2h1emhpZHVvLmNvbS8lRTUlQUQlQTYlRTQlQjklQTAvd2luZG93cyVFNSVBNCU5NiVFNSVBMyVCMyVFNyVCQyU5NiVFNyVBOCU4Qi8oQyMpV2luZG93cyBTaGVsbCDlpJblo7PnvJbnqIvns7vliJcxIC0g5Z+656GA77yM5rWP6KeI5LiA5Liq5paH5Lu25aS5IC0g5p+g5qqs55qEIC0g5Y2a5a6i5ZutX2ZpbGVzL05vbmUuZ2lm.YfW2Rv?w=700&webp=1)
using System.Text;
![(C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹 (C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuc2h1emhpZHVvLmNvbS8lRTUlQUQlQTYlRTQlQjklQTAvd2luZG93cyVFNSVBNCU5NiVFNSVBMyVCMyVFNyVCQyU5NiVFNyVBOCU4Qi8oQyMpV2luZG93cyBTaGVsbCDlpJblo7PnvJbnqIvns7vliJcxIC0g5Z+656GA77yM5rWP6KeI5LiA5Liq5paH5Lu25aS5IC0g5p+g5qqs55qEIC0g5Y2a5a6i5ZutX2ZpbGVzL05vbmUuZ2lm.YfW2Rv?w=700&webp=1)
using System.Runtime.InteropServices;
![(C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹 (C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuc2h1emhpZHVvLmNvbS8lRTUlQUQlQTYlRTQlQjklQTAvd2luZG93cyVFNSVBNCU5NiVFNSVBMyVCMyVFNyVCQyU5NiVFNyVBOCU4Qi8oQyMpV2luZG93cyBTaGVsbCDlpJblo7PnvJbnqIvns7vliJcxIC0g5Z+656GA77yM5rWP6KeI5LiA5Liq5paH5Lu25aS5IC0g5p+g5qqs55qEIC0g5Y2a5a6i5ZutX2ZpbGVzL05vbmUuZ2lm.YfW2Rv?w=700&webp=1)
![(C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹 (C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuc2h1emhpZHVvLmNvbS8lRTUlQUQlQTYlRTQlQjklQTAvd2luZG93cyVFNSVBNCU5NiVFNSVBMyVCMyVFNyVCQyU5NiVFNyVBOCU4Qi8oQyMpV2luZG93cyBTaGVsbCDlpJblo7PnvJbnqIvns7vliJcxIC0g5Z+656GA77yM5rWP6KeI5LiA5Liq5paH5Lu25aS5IC0g5p+g5qqs55qEIC0g5Y2a5a6i5ZutX2ZpbGVzL05vbmUuZ2lm.YfW2Rv?w=700&webp=1)
namespace WinShell
![(C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹 (C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuc2h1emhpZHVvLmNvbS8lRTUlQUQlQTYlRTQlQjklQTAvd2luZG93cyVFNSVBNCU5NiVFNSVBMyVCMyVFNyVCQyU5NiVFNyVBOCU4Qi8oQyMpV2luZG93cyBTaGVsbCDlpJblo7PnvJbnqIvns7vliJcxIC0g5Z+656GA77yM5rWP6KeI5LiA5Liq5paH5Lu25aS5IC0g5p+g5qqs55qEIC0g5Y2a5a6i5ZutX2ZpbGVzL0V4cGFuZGVkQmxvY2tTdGFydC5naWY%3D.YfW2WFVD&67F'Bv?w=700&webp=1)
{
![(C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹 (C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuc2h1emhpZHVvLmNvbS8lRTUlQUQlQTYlRTQlQjklQTAvd2luZG93cyVFNSVBNCU5NiVFNSVBMyVCMyVFNyVCQyU5NiVFNyVBOCU4Qi8oQyMpV2luZG93cyBTaGVsbCDlpJblo7PnvJbnqIvns7vliJcxIC0g5Z+656GA77yM5rWP6KeI5LiA5Liq5paH5Lu25aS5IC0g5p+g5qqs55qEIC0g5Y2a5a6i5ZutX2ZpbGVzL0luQmxvY2suZ2lm.YfW2&6v?w=700&webp=1)
[ComImport]
![(C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹 (C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuc2h1emhpZHVvLmNvbS8lRTUlQUQlQTYlRTQlQjklQTAvd2luZG93cyVFNSVBNCU5NiVFNSVBMyVCMyVFNyVCQyU5NiVFNyVBOCU4Qi8oQyMpV2luZG93cyBTaGVsbCDlpJblo7PnvJbnqIvns7vliJcxIC0g5Z+656GA77yM5rWP6KeI5LiA5Liq5paH5Lu25aS5IC0g5p+g5qqs55qEIC0g5Y2a5a6i5ZutX2ZpbGVzL0luQmxvY2suZ2lm.YfW2&6v?w=700&webp=1)
[InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
![(C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹 (C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuc2h1emhpZHVvLmNvbS8lRTUlQUQlQTYlRTQlQjklQTAvd2luZG93cyVFNSVBNCU5NiVFNSVBMyVCMyVFNyVCQyU5NiVFNyVBOCU4Qi8oQyMpV2luZG93cyBTaGVsbCDlpJblo7PnvJbnqIvns7vliJcxIC0g5Z+656GA77yM5rWP6KeI5LiA5Liq5paH5Lu25aS5IC0g5p+g5qqs55qEIC0g5Y2a5a6i5ZutX2ZpbGVzL0luQmxvY2suZ2lm.YfW2&6v?w=700&webp=1)
[Guid("000214E6-0000-0000-C000-000000000046")]
![(C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹 (C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuc2h1emhpZHVvLmNvbS8lRTUlQUQlQTYlRTQlQjklQTAvd2luZG93cyVFNSVBNCU5NiVFNSVBMyVCMyVFNyVCQyU5NiVFNyVBOCU4Qi8oQyMpV2luZG93cyBTaGVsbCDlpJblo7PnvJbnqIvns7vliJcxIC0g5Z+656GA77yM5rWP6KeI5LiA5Liq5paH5Lu25aS5IC0g5p+g5qqs55qEIC0g5Y2a5a6i5ZutX2ZpbGVzL0luQmxvY2suZ2lm.YfW2&6v?w=700&webp=1)
public interface IShellFolder
![(C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹 (C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuc2h1emhpZHVvLmNvbS8lRTUlQUQlQTYlRTQlQjklQTAvd2luZG93cyVFNSVBNCU5NiVFNSVBMyVCMyVFNyVCQyU5NiVFNyVBOCU4Qi8oQyMpV2luZG93cyBTaGVsbCDlpJblo7PnvJbnqIvns7vliJcxIC0g5Z+656GA77yM5rWP6KeI5LiA5Liq5paH5Lu25aS5IC0g5p+g5qqs55qEIC0g5Y2a5a6i5ZutX2ZpbGVzL0V4cGFuZGVkU3ViQmxvY2tTdGFydC5naWY%3D.YfW2WFVE7V$&67F'Bv?w=700&webp=1)
{
![(C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹 (C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuc2h1emhpZHVvLmNvbS8lRTUlQUQlQTYlRTQlQjklQTAvd2luZG93cyVFNSVBNCU5NiVFNSVBMyVCMyVFNyVCQyU5NiVFNyVBOCU4Qi8oQyMpV2luZG93cyBTaGVsbCDlpJblo7PnvJbnqIvns7vliJcxIC0g5Z+656GA77yM5rWP6KeI5LiA5Liq5paH5Lu25aS5IC0g5p+g5qqs55qEIC0g5Y2a5a6i5ZutX2ZpbGVzL0V4cGFuZGVkU3ViQmxvY2tFbmQuZ2lm.YfW2WFVE7V$&6VBv?w=700&webp=1)
}
![(C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹 (C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuc2h1emhpZHVvLmNvbS8lRTUlQUQlQTYlRTQlQjklQTAvd2luZG93cyVFNSVBNCU5NiVFNSVBMyVCMyVFNyVCQyU5NiVFNyVBOCU4Qi8oQyMpV2luZG93cyBTaGVsbCDlpJblo7PnvJbnqIvns7vliJcxIC0g5Z+656GA77yM5rWP6KeI5LiA5Liq5paH5Lu25aS5IC0g5p+g5qqs55qEIC0g5Y2a5a6i5ZutX2ZpbGVzL0V4cGFuZGVkQmxvY2tFbmQuZ2lm.YfW2WFVD&6VBv?w=700&webp=1)
}
当然,这个接口还没有列出细节函数。我们要做的仅仅是从最基础开始。
首先我们必须了解,在外壳编程中,要使用 PIDL 路径代替普通路径(如果对 PIDL 不熟悉,请看Windows外壳名字空间的浏览)。
“桌面”是最*的文件夹,外壳名字空间中其他各项都可以用从“桌面”开始的 PIDL 加以表示。
如何获取“桌面”的 PIDL 和其 IShellFolder 接口呢,可以通过 API SHGetDesktopFolder:
![(C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹 (C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuc2h1emhpZHVvLmNvbS8lRTUlQUQlQTYlRTQlQjklQTAvd2luZG93cyVFNSVBNCU5NiVFNSVBMyVCMyVFNyVCQyU5NiVFNyVBOCU4Qi8oQyMpV2luZG93cyBTaGVsbCDlpJblo7PnvJbnqIvns7vliJcxIC0g5Z+656GA77yM5rWP6KeI5LiA5Liq5paH5Lu25aS5IC0g5p+g5qqs55qEIC0g5Y2a5a6i5ZutX2ZpbGVzL05vbmUuZ2lm.YfW2Rv?w=700&webp=1)
[DllImport("shell32.dll")]
![(C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹 (C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuc2h1emhpZHVvLmNvbS8lRTUlQUQlQTYlRTQlQjklQTAvd2luZG93cyVFNSVBNCU5NiVFNSVBMyVCMyVFNyVCQyU5NiVFNyVBOCU4Qi8oQyMpV2luZG93cyBTaGVsbCDlpJblo7PnvJbnqIvns7vliJcxIC0g5Z+656GA77yM5rWP6KeI5LiA5Liq5paH5Lu25aS5IC0g5p+g5qqs55qEIC0g5Y2a5a6i5ZutX2ZpbGVzL05vbmUuZ2lm.YfW2Rv?w=700&webp=1)
public static extern Int32 SHGetDesktopFolder(out IntPtr ppshf);
![(C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹 (C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuc2h1emhpZHVvLmNvbS8lRTUlQUQlQTYlRTQlQjklQTAvd2luZG93cyVFNSVBNCU5NiVFNSVBMyVCMyVFNyVCQyU5NiVFNyVBOCU4Qi8oQyMpV2luZG93cyBTaGVsbCDlpJblo7PnvJbnqIvns7vliJcxIC0g5Z+656GA77yM5rWP6KeI5LiA5Liq5paH5Lu25aS5IC0g5p+g5qqs55qEIC0g5Y2a5a6i5ZutX2ZpbGVzL05vbmUuZ2lm.YfW2Rv?w=700&webp=1)
![(C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹 (C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuc2h1emhpZHVvLmNvbS8lRTUlQUQlQTYlRTQlQjklQTAvd2luZG93cyVFNSVBNCU5NiVFNSVBMyVCMyVFNyVCQyU5NiVFNyVBOCU4Qi8oQyMpV2luZG93cyBTaGVsbCDlpJblo7PnvJbnqIvns7vliJcxIC0g5Z+656GA77yM5rWP6KeI5LiA5Liq5paH5Lu25aS5IC0g5p+g5qqs55qEIC0g5Y2a5a6i5ZutX2ZpbGVzL0V4cGFuZGVkQmxvY2tTdGFydC5naWY%3D.YfW2WFVD&67F'Bv?w=700&webp=1)
/// <summary>
![(C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹 (C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuc2h1emhpZHVvLmNvbS8lRTUlQUQlQTYlRTQlQjklQTAvd2luZG93cyVFNSVBNCU5NiVFNSVBMyVCMyVFNyVCQyU5NiVFNyVBOCU4Qi8oQyMpV2luZG93cyBTaGVsbCDlpJblo7PnvJbnqIvns7vliJcxIC0g5Z+656GA77yM5rWP6KeI5LiA5Liq5paH5Lu25aS5IC0g5p+g5qqs55qEIC0g5Y2a5a6i5ZutX2ZpbGVzL0luQmxvY2suZ2lm.YfW2&6v?w=700&webp=1)
/// 获得桌面 Shell
![(C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹 (C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuc2h1emhpZHVvLmNvbS8lRTUlQUQlQTYlRTQlQjklQTAvd2luZG93cyVFNSVBNCU5NiVFNSVBMyVCMyVFNyVCQyU5NiVFNyVBOCU4Qi8oQyMpV2luZG93cyBTaGVsbCDlpJblo7PnvJbnqIvns7vliJcxIC0g5Z+656GA77yM5rWP6KeI5LiA5Liq5paH5Lu25aS5IC0g5p+g5qqs55qEIC0g5Y2a5a6i5ZutX2ZpbGVzL0V4cGFuZGVkQmxvY2tFbmQuZ2lm.YfW2WFVD&6VBv?w=700&webp=1)
/// </summary>
![(C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹 (C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuc2h1emhpZHVvLmNvbS8lRTUlQUQlQTYlRTQlQjklQTAvd2luZG93cyVFNSVBNCU5NiVFNSVBMyVCMyVFNyVCQyU5NiVFNyVBOCU4Qi8oQyMpV2luZG93cyBTaGVsbCDlpJblo7PnvJbnqIvns7vliJcxIC0g5Z+656GA77yM5rWP6KeI5LiA5Liq5paH5Lu25aS5IC0g5p+g5qqs55qEIC0g5Y2a5a6i5ZutX2ZpbGVzL05vbmUuZ2lm.YfW2Rv?w=700&webp=1)
public static IShellFolder GetDesktopFolder(out IntPtr ppshf)
![(C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹 (C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuc2h1emhpZHVvLmNvbS8lRTUlQUQlQTYlRTQlQjklQTAvd2luZG93cyVFNSVBNCU5NiVFNSVBMyVCMyVFNyVCQyU5NiVFNyVBOCU4Qi8oQyMpV2luZG93cyBTaGVsbCDlpJblo7PnvJbnqIvns7vliJcxIC0g5Z+656GA77yM5rWP6KeI5LiA5Liq5paH5Lu25aS5IC0g5p+g5qqs55qEIC0g5Y2a5a6i5ZutX2ZpbGVzL0V4cGFuZGVkQmxvY2tTdGFydC5naWY%3D.YfW2WFVD&67F'Bv?w=700&webp=1)
{
![(C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹 (C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuc2h1emhpZHVvLmNvbS8lRTUlQUQlQTYlRTQlQjklQTAvd2luZG93cyVFNSVBNCU5NiVFNSVBMyVCMyVFNyVCQyU5NiVFNyVBOCU4Qi8oQyMpV2luZG93cyBTaGVsbCDlpJblo7PnvJbnqIvns7vliJcxIC0g5Z+656GA77yM5rWP6KeI5LiA5Liq5paH5Lu25aS5IC0g5p+g5qqs55qEIC0g5Y2a5a6i5ZutX2ZpbGVzL0luQmxvY2suZ2lm.YfW2&6v?w=700&webp=1)
SHGetDesktopFolder(out ppshf);
![(C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹 (C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuc2h1emhpZHVvLmNvbS8lRTUlQUQlQTYlRTQlQjklQTAvd2luZG93cyVFNSVBNCU5NiVFNSVBMyVCMyVFNyVCQyU5NiVFNyVBOCU4Qi8oQyMpV2luZG93cyBTaGVsbCDlpJblo7PnvJbnqIvns7vliJcxIC0g5Z+656GA77yM5rWP6KeI5LiA5Liq5paH5Lu25aS5IC0g5p+g5qqs55qEIC0g5Y2a5a6i5ZutX2ZpbGVzL0luQmxvY2suZ2lm.YfW2&6v?w=700&webp=1)
Object obj = Marshal.GetObjectForIUnknown(ppshf);
![(C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹 (C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuc2h1emhpZHVvLmNvbS8lRTUlQUQlQTYlRTQlQjklQTAvd2luZG93cyVFNSVBNCU5NiVFNSVBMyVCMyVFNyVCQyU5NiVFNyVBOCU4Qi8oQyMpV2luZG93cyBTaGVsbCDlpJblo7PnvJbnqIvns7vliJcxIC0g5Z+656GA77yM5rWP6KeI5LiA5Liq5paH5Lu25aS5IC0g5p+g5qqs55qEIC0g5Y2a5a6i5ZutX2ZpbGVzL0luQmxvY2suZ2lm.YfW2&6v?w=700&webp=1)
return (IShellFolder)obj;
![(C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹 (C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuc2h1emhpZHVvLmNvbS8lRTUlQUQlQTYlRTQlQjklQTAvd2luZG93cyVFNSVBNCU5NiVFNSVBMyVCMyVFNyVCQyU5NiVFNyVBOCU4Qi8oQyMpV2luZG93cyBTaGVsbCDlpJblo7PnvJbnqIvns7vliJcxIC0g5Z+656GA77yM5rWP6KeI5LiA5Liq5paH5Lu25aS5IC0g5p+g5qqs55qEIC0g5Y2a5a6i5ZutX2ZpbGVzL0V4cGFuZGVkQmxvY2tFbmQuZ2lm.YfW2WFVD&6VBv?w=700&webp=1)
}
![(C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹 (C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuc2h1emhpZHVvLmNvbS8lRTUlQUQlQTYlRTQlQjklQTAvd2luZG93cyVFNSVBNCU5NiVFNSVBMyVCMyVFNyVCQyU5NiVFNyVBOCU4Qi8oQyMpV2luZG93cyBTaGVsbCDlpJblo7PnvJbnqIvns7vliJcxIC0g5Z+656GA77yM5rWP6KeI5LiA5Liq5paH5Lu25aS5IC0g5p+g5qqs55qEIC0g5Y2a5a6i5ZutX2ZpbGVzL05vbmUuZ2lm.YfW2Rv?w=700&webp=1)
//获得桌面 PIDL
![(C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹 (C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuc2h1emhpZHVvLmNvbS8lRTUlQUQlQTYlRTQlQjklQTAvd2luZG93cyVFNSVBNCU5NiVFNSVBMyVCMyVFNyVCQyU5NiVFNyVBOCU4Qi8oQyMpV2luZG93cyBTaGVsbCDlpJblo7PnvJbnqIvns7vliJcxIC0g5Z+656GA77yM5rWP6KeI5LiA5Liq5paH5Lu25aS5IC0g5p+g5qqs55qEIC0g5Y2a5a6i5ZutX2ZpbGVzL05vbmUuZ2lm.YfW2Rv?w=700&webp=1)
IntPtr desktopPtr;
![(C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹 (C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuc2h1emhpZHVvLmNvbS8lRTUlQUQlQTYlRTQlQjklQTAvd2luZG93cyVFNSVBNCU5NiVFNSVBMyVCMyVFNyVCQyU5NiVFNyVBOCU4Qi8oQyMpV2luZG93cyBTaGVsbCDlpJblo7PnvJbnqIvns7vliJcxIC0g5Z+656GA77yM5rWP6KeI5LiA5Liq5paH5Lu25aS5IC0g5p+g5qqs55qEIC0g5Y2a5a6i5ZutX2ZpbGVzL05vbmUuZ2lm.YfW2Rv?w=700&webp=1)
IShellFolder desktop = API.GetDesktopFolder(out desktopPtr);
好的,我们取得“桌面”的 IShellFolder 接口,就已经成功了一半。现在我需要通过“桌面”,来获取“C:\”这个路径的 PIDL 和 IShellFolder 接口,可以通过 IShellFolder 的 ParseDisplayName 和 BindToObject 函数来实现:
![(C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹 (C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuc2h1emhpZHVvLmNvbS8lRTUlQUQlQTYlRTQlQjklQTAvd2luZG93cyVFNSVBNCU5NiVFNSVBMyVCMyVFNyVCQyU5NiVFNyVBOCU4Qi8oQyMpV2luZG93cyBTaGVsbCDlpJblo7PnvJbnqIvns7vliJcxIC0g5Z+656GA77yM5rWP6KeI5LiA5Liq5paH5Lu25aS5IC0g5p+g5qqs55qEIC0g5Y2a5a6i5ZutX2ZpbGVzL05vbmUuZ2lm.YfW2Rv?w=700&webp=1)
void ParseDisplayName(
![(C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹 (C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuc2h1emhpZHVvLmNvbS8lRTUlQUQlQTYlRTQlQjklQTAvd2luZG93cyVFNSVBNCU5NiVFNSVBMyVCMyVFNyVCQyU5NiVFNyVBOCU4Qi8oQyMpV2luZG93cyBTaGVsbCDlpJblo7PnvJbnqIvns7vliJcxIC0g5Z+656GA77yM5rWP6KeI5LiA5Liq5paH5Lu25aS5IC0g5p+g5qqs55qEIC0g5Y2a5a6i5ZutX2ZpbGVzL05vbmUuZ2lm.YfW2Rv?w=700&webp=1)
IntPtr hwnd,
![(C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹 (C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuc2h1emhpZHVvLmNvbS8lRTUlQUQlQTYlRTQlQjklQTAvd2luZG93cyVFNSVBNCU5NiVFNSVBMyVCMyVFNyVCQyU5NiVFNyVBOCU4Qi8oQyMpV2luZG93cyBTaGVsbCDlpJblo7PnvJbnqIvns7vliJcxIC0g5Z+656GA77yM5rWP6KeI5LiA5Liq5paH5Lu25aS5IC0g5p+g5qqs55qEIC0g5Y2a5a6i5ZutX2ZpbGVzL05vbmUuZ2lm.YfW2Rv?w=700&webp=1)
IntPtr pbc,
![(C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹 (C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuc2h1emhpZHVvLmNvbS8lRTUlQUQlQTYlRTQlQjklQTAvd2luZG93cyVFNSVBNCU5NiVFNSVBMyVCMyVFNyVCQyU5NiVFNyVBOCU4Qi8oQyMpV2luZG93cyBTaGVsbCDlpJblo7PnvJbnqIvns7vliJcxIC0g5Z+656GA77yM5rWP6KeI5LiA5Liq5paH5Lu25aS5IC0g5p+g5qqs55qEIC0g5Y2a5a6i5ZutX2ZpbGVzL05vbmUuZ2lm.YfW2Rv?w=700&webp=1)
[MarshalAs(UnmanagedType.LPWStr)] string pszDisplayName,
![(C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹 (C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuc2h1emhpZHVvLmNvbS8lRTUlQUQlQTYlRTQlQjklQTAvd2luZG93cyVFNSVBNCU5NiVFNSVBMyVCMyVFNyVCQyU5NiVFNyVBOCU4Qi8oQyMpV2luZG93cyBTaGVsbCDlpJblo7PnvJbnqIvns7vliJcxIC0g5Z+656GA77yM5rWP6KeI5LiA5Liq5paH5Lu25aS5IC0g5p+g5qqs55qEIC0g5Y2a5a6i5ZutX2ZpbGVzL05vbmUuZ2lm.YfW2Rv?w=700&webp=1)
out uint pchEaten,
![(C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹 (C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuc2h1emhpZHVvLmNvbS8lRTUlQUQlQTYlRTQlQjklQTAvd2luZG93cyVFNSVBNCU5NiVFNSVBMyVCMyVFNyVCQyU5NiVFNyVBOCU4Qi8oQyMpV2luZG93cyBTaGVsbCDlpJblo7PnvJbnqIvns7vliJcxIC0g5Z+656GA77yM5rWP6KeI5LiA5Liq5paH5Lu25aS5IC0g5p+g5qqs55qEIC0g5Y2a5a6i5ZutX2ZpbGVzL05vbmUuZ2lm.YfW2Rv?w=700&webp=1)
out IntPtr ppidl,
![(C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹 (C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuc2h1emhpZHVvLmNvbS8lRTUlQUQlQTYlRTQlQjklQTAvd2luZG93cyVFNSVBNCU5NiVFNSVBMyVCMyVFNyVCQyU5NiVFNyVBOCU4Qi8oQyMpV2luZG93cyBTaGVsbCDlpJblo7PnvJbnqIvns7vliJcxIC0g5Z+656GA77yM5rWP6KeI5LiA5Liq5paH5Lu25aS5IC0g5p+g5qqs55qEIC0g5Y2a5a6i5ZutX2ZpbGVzL05vbmUuZ2lm.YfW2Rv?w=700&webp=1)
ref uint pdwAttributes);
![(C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹 (C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuc2h1emhpZHVvLmNvbS8lRTUlQUQlQTYlRTQlQjklQTAvd2luZG93cyVFNSVBNCU5NiVFNSVBMyVCMyVFNyVCQyU5NiVFNyVBOCU4Qi8oQyMpV2luZG93cyBTaGVsbCDlpJblo7PnvJbnqIvns7vliJcxIC0g5Z+656GA77yM5rWP6KeI5LiA5Liq5paH5Lu25aS5IC0g5p+g5qqs55qEIC0g5Y2a5a6i5ZutX2ZpbGVzL05vbmUuZ2lm.YfW2Rv?w=700&webp=1)
![(C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹 (C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuc2h1emhpZHVvLmNvbS8lRTUlQUQlQTYlRTQlQjklQTAvd2luZG93cyVFNSVBNCU5NiVFNSVBMyVCMyVFNyVCQyU5NiVFNyVBOCU4Qi8oQyMpV2luZG93cyBTaGVsbCDlpJblo7PnvJbnqIvns7vliJcxIC0g5Z+656GA77yM5rWP6KeI5LiA5Liq5paH5Lu25aS5IC0g5p+g5qqs55qEIC0g5Y2a5a6i5ZutX2ZpbGVzL05vbmUuZ2lm.YfW2Rv?w=700&webp=1)
void BindToObject(
![(C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹 (C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuc2h1emhpZHVvLmNvbS8lRTUlQUQlQTYlRTQlQjklQTAvd2luZG93cyVFNSVBNCU5NiVFNSVBMyVCMyVFNyVCQyU5NiVFNyVBOCU4Qi8oQyMpV2luZG93cyBTaGVsbCDlpJblo7PnvJbnqIvns7vliJcxIC0g5Z+656GA77yM5rWP6KeI5LiA5Liq5paH5Lu25aS5IC0g5p+g5qqs55qEIC0g5Y2a5a6i5ZutX2ZpbGVzL05vbmUuZ2lm.YfW2Rv?w=700&webp=1)
IntPtr pidl,
![(C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹 (C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuc2h1emhpZHVvLmNvbS8lRTUlQUQlQTYlRTQlQjklQTAvd2luZG93cyVFNSVBNCU5NiVFNSVBMyVCMyVFNyVCQyU5NiVFNyVBOCU4Qi8oQyMpV2luZG93cyBTaGVsbCDlpJblo7PnvJbnqIvns7vliJcxIC0g5Z+656GA77yM5rWP6KeI5LiA5Liq5paH5Lu25aS5IC0g5p+g5qqs55qEIC0g5Y2a5a6i5ZutX2ZpbGVzL05vbmUuZ2lm.YfW2Rv?w=700&webp=1)
IntPtr pbc,
![(C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹 (C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuc2h1emhpZHVvLmNvbS8lRTUlQUQlQTYlRTQlQjklQTAvd2luZG93cyVFNSVBNCU5NiVFNSVBMyVCMyVFNyVCQyU5NiVFNyVBOCU4Qi8oQyMpV2luZG93cyBTaGVsbCDlpJblo7PnvJbnqIvns7vliJcxIC0g5Z+656GA77yM5rWP6KeI5LiA5Liq5paH5Lu25aS5IC0g5p+g5qqs55qEIC0g5Y2a5a6i5ZutX2ZpbGVzL05vbmUuZ2lm.YfW2Rv?w=700&webp=1)
[In()] ref Guid riid,
![(C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹 (C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuc2h1emhpZHVvLmNvbS8lRTUlQUQlQTYlRTQlQjklQTAvd2luZG93cyVFNSVBNCU5NiVFNSVBMyVCMyVFNyVCQyU5NiVFNyVBOCU4Qi8oQyMpV2luZG93cyBTaGVsbCDlpJblo7PnvJbnqIvns7vliJcxIC0g5Z+656GA77yM5rWP6KeI5LiA5Liq5paH5Lu25aS5IC0g5p+g5qqs55qEIC0g5Y2a5a6i5ZutX2ZpbGVzL05vbmUuZ2lm.YfW2Rv?w=700&webp=1)
out IShellFolder ppv);
![(C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹 (C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuc2h1emhpZHVvLmNvbS8lRTUlQUQlQTYlRTQlQjklQTAvd2luZG93cyVFNSVBNCU5NiVFNSVBMyVCMyVFNyVCQyU5NiVFNyVBOCU4Qi8oQyMpV2luZG93cyBTaGVsbCDlpJblo7PnvJbnqIvns7vliJcxIC0g5Z+656GA77yM5rWP6KeI5LiA5Liq5paH5Lu25aS5IC0g5p+g5qqs55qEIC0g5Y2a5a6i5ZutX2ZpbGVzL05vbmUuZ2lm.YfW2Rv?w=700&webp=1)
//获取 C 盘的 PIDL
![(C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹 (C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuc2h1emhpZHVvLmNvbS8lRTUlQUQlQTYlRTQlQjklQTAvd2luZG93cyVFNSVBNCU5NiVFNSVBMyVCMyVFNyVCQyU5NiVFNyVBOCU4Qi8oQyMpV2luZG93cyBTaGVsbCDlpJblo7PnvJbnqIvns7vliJcxIC0g5Z+656GA77yM5rWP6KeI5LiA5Liq5paH5Lu25aS5IC0g5p+g5qqs55qEIC0g5Y2a5a6i5ZutX2ZpbGVzL05vbmUuZ2lm.YfW2Rv?w=700&webp=1)
string FolderPath = @"C:\";
![(C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹 (C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuc2h1emhpZHVvLmNvbS8lRTUlQUQlQTYlRTQlQjklQTAvd2luZG93cyVFNSVBNCU5NiVFNSVBMyVCMyVFNyVCQyU5NiVFNyVBOCU4Qi8oQyMpV2luZG93cyBTaGVsbCDlpJblo7PnvJbnqIvns7vliJcxIC0g5Z+656GA77yM5rWP6KeI5LiA5Liq5paH5Lu25aS5IC0g5p+g5qqs55qEIC0g5Y2a5a6i5ZutX2ZpbGVzL05vbmUuZ2lm.YfW2Rv?w=700&webp=1)
IntPtr Pidl = IntPtr.Zero;
![(C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹 (C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuc2h1emhpZHVvLmNvbS8lRTUlQUQlQTYlRTQlQjklQTAvd2luZG93cyVFNSVBNCU5NiVFNSVBMyVCMyVFNyVCQyU5NiVFNyVBOCU4Qi8oQyMpV2luZG93cyBTaGVsbCDlpJblo7PnvJbnqIvns7vliJcxIC0g5Z+656GA77yM5rWP6KeI5LiA5Liq5paH5Lu25aS5IC0g5p+g5qqs55qEIC0g5Y2a5a6i5ZutX2ZpbGVzL05vbmUuZ2lm.YfW2Rv?w=700&webp=1)
IShellFolder Root;
![(C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹 (C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuc2h1emhpZHVvLmNvbS8lRTUlQUQlQTYlRTQlQjklQTAvd2luZG93cyVFNSVBNCU5NiVFNSVBMyVCMyVFNyVCQyU5NiVFNyVBOCU4Qi8oQyMpV2luZG93cyBTaGVsbCDlpJblo7PnvJbnqIvns7vliJcxIC0g5Z+656GA77yM5rWP6KeI5LiA5Liq5paH5Lu25aS5IC0g5p+g5qqs55qEIC0g5Y2a5a6i5ZutX2ZpbGVzL05vbmUuZ2lm.YfW2Rv?w=700&webp=1)
uint i, j = 0;
![(C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹 (C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuc2h1emhpZHVvLmNvbS8lRTUlQUQlQTYlRTQlQjklQTAvd2luZG93cyVFNSVBNCU5NiVFNSVBMyVCMyVFNyVCQyU5NiVFNyVBOCU4Qi8oQyMpV2luZG93cyBTaGVsbCDlpJblo7PnvJbnqIvns7vliJcxIC0g5Z+656GA77yM5rWP6KeI5LiA5Liq5paH5Lu25aS5IC0g5p+g5qqs55qEIC0g5Y2a5a6i5ZutX2ZpbGVzL05vbmUuZ2lm.YfW2Rv?w=700&webp=1)
desktop.ParseDisplayName(Handle, IntPtr.Zero, FolderPath, out i, out Pidl, ref j);
![(C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹 (C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuc2h1emhpZHVvLmNvbS8lRTUlQUQlQTYlRTQlQjklQTAvd2luZG93cyVFNSVBNCU5NiVFNSVBMyVCMyVFNyVCQyU5NiVFNyVBOCU4Qi8oQyMpV2luZG93cyBTaGVsbCDlpJblo7PnvJbnqIvns7vliJcxIC0g5Z+656GA77yM5rWP6KeI5LiA5Liq5paH5Lu25aS5IC0g5p+g5qqs55qEIC0g5Y2a5a6i5ZutX2ZpbGVzL05vbmUuZ2lm.YfW2Rv?w=700&webp=1)
desktop.BindToObject(Pidl, IntPtr.Zero, ref Guids.IID_IShellFolder, out Root);
前提是你应该保证路径存在,因为我没有做任何出错控制。这样我们就获得了一个 Root,它表示C盘。通过这个Root,我们可以用 EnumObjects 来循环获取其子项(子文件和子文件夹):
![(C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹 (C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuc2h1emhpZHVvLmNvbS8lRTUlQUQlQTYlRTQlQjklQTAvd2luZG93cyVFNSVBNCU5NiVFNSVBMyVCMyVFNyVCQyU5NiVFNyVBOCU4Qi8oQyMpV2luZG93cyBTaGVsbCDlpJblo7PnvJbnqIvns7vliJcxIC0g5Z+656GA77yM5rWP6KeI5LiA5Liq5paH5Lu25aS5IC0g5p+g5qqs55qEIC0g5Y2a5a6i5ZutX2ZpbGVzL05vbmUuZ2lm.YfW2Rv?w=700&webp=1)
[PreserveSig]
![(C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹 (C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuc2h1emhpZHVvLmNvbS8lRTUlQUQlQTYlRTQlQjklQTAvd2luZG93cyVFNSVBNCU5NiVFNSVBMyVCMyVFNyVCQyU5NiVFNyVBOCU4Qi8oQyMpV2luZG93cyBTaGVsbCDlpJblo7PnvJbnqIvns7vliJcxIC0g5Z+656GA77yM5rWP6KeI5LiA5Liq5paH5Lu25aS5IC0g5p+g5qqs55qEIC0g5Y2a5a6i5ZutX2ZpbGVzL05vbmUuZ2lm.YfW2Rv?w=700&webp=1)
int EnumObjects(IntPtr hWnd, SHCONTF flags, out IntPtr enumIDList);
![(C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹 (C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuc2h1emhpZHVvLmNvbS8lRTUlQUQlQTYlRTQlQjklQTAvd2luZG93cyVFNSVBNCU5NiVFNSVBMyVCMyVFNyVCQyU5NiVFNyVBOCU4Qi8oQyMpV2luZG93cyBTaGVsbCDlpJblo7PnvJbnqIvns7vliJcxIC0g5Z+656GA77yM5rWP6KeI5LiA5Liq5paH5Lu25aS5IC0g5p+g5qqs55qEIC0g5Y2a5a6i5ZutX2ZpbGVzL05vbmUuZ2lm.YfW2Rv?w=700&webp=1)
//循环查找 C 盘下面的文件/文件夹的 PIDL
![(C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹 (C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuc2h1emhpZHVvLmNvbS8lRTUlQUQlQTYlRTQlQjklQTAvd2luZG93cyVFNSVBNCU5NiVFNSVBMyVCMyVFNyVCQyU5NiVFNyVBOCU4Qi8oQyMpV2luZG93cyBTaGVsbCDlpJblo7PnvJbnqIvns7vliJcxIC0g5Z+656GA77yM5rWP6KeI5LiA5Liq5paH5Lu25aS5IC0g5p+g5qqs55qEIC0g5Y2a5a6i5ZutX2ZpbGVzL05vbmUuZ2lm.YfW2Rv?w=700&webp=1)
IEnumIDList fileEnum = null;
![(C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹 (C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuc2h1emhpZHVvLmNvbS8lRTUlQUQlQTYlRTQlQjklQTAvd2luZG93cyVFNSVBNCU5NiVFNSVBMyVCMyVFNyVCQyU5NiVFNyVBOCU4Qi8oQyMpV2luZG93cyBTaGVsbCDlpJblo7PnvJbnqIvns7vliJcxIC0g5Z+656GA77yM5rWP6KeI5LiA5Liq5paH5Lu25aS5IC0g5p+g5qqs55qEIC0g5Y2a5a6i5ZutX2ZpbGVzL05vbmUuZ2lm.YfW2Rv?w=700&webp=1)
IEnumIDList folderEnum = null;
![(C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹 (C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuc2h1emhpZHVvLmNvbS8lRTUlQUQlQTYlRTQlQjklQTAvd2luZG93cyVFNSVBNCU5NiVFNSVBMyVCMyVFNyVCQyU5NiVFNyVBOCU4Qi8oQyMpV2luZG93cyBTaGVsbCDlpJblo7PnvJbnqIvns7vliJcxIC0g5Z+656GA77yM5rWP6KeI5LiA5Liq5paH5Lu25aS5IC0g5p+g5qqs55qEIC0g5Y2a5a6i5ZutX2ZpbGVzL05vbmUuZ2lm.YfW2Rv?w=700&webp=1)
IntPtr fileEnumPtr = IntPtr.Zero;
![(C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹 (C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuc2h1emhpZHVvLmNvbS8lRTUlQUQlQTYlRTQlQjklQTAvd2luZG93cyVFNSVBNCU5NiVFNSVBMyVCMyVFNyVCQyU5NiVFNyVBOCU4Qi8oQyMpV2luZG93cyBTaGVsbCDlpJblo7PnvJbnqIvns7vliJcxIC0g5Z+656GA77yM5rWP6KeI5LiA5Liq5paH5Lu25aS5IC0g5p+g5qqs55qEIC0g5Y2a5a6i5ZutX2ZpbGVzL05vbmUuZ2lm.YfW2Rv?w=700&webp=1)
IntPtr folderEnumPtr = IntPtr.Zero;
![(C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹 (C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuc2h1emhpZHVvLmNvbS8lRTUlQUQlQTYlRTQlQjklQTAvd2luZG93cyVFNSVBNCU5NiVFNSVBMyVCMyVFNyVCQyU5NiVFNyVBOCU4Qi8oQyMpV2luZG93cyBTaGVsbCDlpJblo7PnvJbnqIvns7vliJcxIC0g5Z+656GA77yM5rWP6KeI5LiA5Liq5paH5Lu25aS5IC0g5p+g5qqs55qEIC0g5Y2a5a6i5ZutX2ZpbGVzL05vbmUuZ2lm.YfW2Rv?w=700&webp=1)
IntPtr pidlSub;
![(C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹 (C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuc2h1emhpZHVvLmNvbS8lRTUlQUQlQTYlRTQlQjklQTAvd2luZG93cyVFNSVBNCU5NiVFNSVBMyVCMyVFNyVCQyU5NiVFNyVBOCU4Qi8oQyMpV2luZG93cyBTaGVsbCDlpJblo7PnvJbnqIvns7vliJcxIC0g5Z+656GA77yM5rWP6KeI5LiA5Liq5paH5Lu25aS5IC0g5p+g5qqs55qEIC0g5Y2a5a6i5ZutX2ZpbGVzL05vbmUuZ2lm.YfW2Rv?w=700&webp=1)
int celtFetched;
![(C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹 (C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuc2h1emhpZHVvLmNvbS8lRTUlQUQlQTYlRTQlQjklQTAvd2luZG93cyVFNSVBNCU5NiVFNSVBMyVCMyVFNyVCQyU5NiVFNyVBOCU4Qi8oQyMpV2luZG93cyBTaGVsbCDlpJblo7PnvJbnqIvns7vliJcxIC0g5Z+656GA77yM5rWP6KeI5LiA5Liq5paH5Lu25aS5IC0g5p+g5qqs55qEIC0g5Y2a5a6i5ZutX2ZpbGVzL05vbmUuZ2lm.YfW2Rv?w=700&webp=1)
![(C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹 (C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuc2h1emhpZHVvLmNvbS8lRTUlQUQlQTYlRTQlQjklQTAvd2luZG93cyVFNSVBNCU5NiVFNSVBMyVCMyVFNyVCQyU5NiVFNyVBOCU4Qi8oQyMpV2luZG93cyBTaGVsbCDlpJblo7PnvJbnqIvns7vliJcxIC0g5Z+656GA77yM5rWP6KeI5LiA5Liq5paH5Lu25aS5IC0g5p+g5qqs55qEIC0g5Y2a5a6i5ZutX2ZpbGVzL05vbmUuZ2lm.YfW2Rv?w=700&webp=1)
//获取子文件夹
![(C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹 (C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuc2h1emhpZHVvLmNvbS8lRTUlQUQlQTYlRTQlQjklQTAvd2luZG93cyVFNSVBNCU5NiVFNSVBMyVCMyVFNyVCQyU5NiVFNyVBOCU4Qi8oQyMpV2luZG93cyBTaGVsbCDlpJblo7PnvJbnqIvns7vliJcxIC0g5Z+656GA77yM5rWP6KeI5LiA5Liq5paH5Lu25aS5IC0g5p+g5qqs55qEIC0g5Y2a5a6i5ZutX2ZpbGVzL05vbmUuZ2lm.YfW2Rv?w=700&webp=1)
if (Root.EnumObjects(this.Handle, SHCONTF.FOLDERS | SHCONTF.INCLUDEHIDDEN, out fileEnumPtr) == API.S_OK)
![(C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹 (C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuc2h1emhpZHVvLmNvbS8lRTUlQUQlQTYlRTQlQjklQTAvd2luZG93cyVFNSVBNCU5NiVFNSVBMyVCMyVFNyVCQyU5NiVFNyVBOCU4Qi8oQyMpV2luZG93cyBTaGVsbCDlpJblo7PnvJbnqIvns7vliJcxIC0g5Z+656GA77yM5rWP6KeI5LiA5Liq5paH5Lu25aS5IC0g5p+g5qqs55qEIC0g5Y2a5a6i5ZutX2ZpbGVzL0V4cGFuZGVkQmxvY2tTdGFydC5naWY%3D.YfW2WFVD&67F'Bv?w=700&webp=1)
{
![(C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹 (C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuc2h1emhpZHVvLmNvbS8lRTUlQUQlQTYlRTQlQjklQTAvd2luZG93cyVFNSVBNCU5NiVFNSVBMyVCMyVFNyVCQyU5NiVFNyVBOCU4Qi8oQyMpV2luZG93cyBTaGVsbCDlpJblo7PnvJbnqIvns7vliJcxIC0g5Z+656GA77yM5rWP6KeI5LiA5Liq5paH5Lu25aS5IC0g5p+g5qqs55qEIC0g5Y2a5a6i5ZutX2ZpbGVzL0luQmxvY2suZ2lm.YfW2&6v?w=700&webp=1)
fileEnum = (IEnumIDList)Marshal.GetObjectForIUnknown(fileEnumPtr);
![(C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹 (C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuc2h1emhpZHVvLmNvbS8lRTUlQUQlQTYlRTQlQjklQTAvd2luZG93cyVFNSVBNCU5NiVFNSVBMyVCMyVFNyVCQyU5NiVFNyVBOCU4Qi8oQyMpV2luZG93cyBTaGVsbCDlpJblo7PnvJbnqIvns7vliJcxIC0g5Z+656GA77yM5rWP6KeI5LiA5Liq5paH5Lu25aS5IC0g5p+g5qqs55qEIC0g5Y2a5a6i5ZutX2ZpbGVzL0luQmxvY2suZ2lm.YfW2&6v?w=700&webp=1)
while (fileEnum.Next(1, out pidlSub, out celtFetched) == 0 && celtFetched == API.S_FALSE)
![(C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹 (C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuc2h1emhpZHVvLmNvbS8lRTUlQUQlQTYlRTQlQjklQTAvd2luZG93cyVFNSVBNCU5NiVFNSVBMyVCMyVFNyVCQyU5NiVFNyVBOCU4Qi8oQyMpV2luZG93cyBTaGVsbCDlpJblo7PnvJbnqIvns7vliJcxIC0g5Z+656GA77yM5rWP6KeI5LiA5Liq5paH5Lu25aS5IC0g5p+g5qqs55qEIC0g5Y2a5a6i5ZutX2ZpbGVzL0V4cGFuZGVkU3ViQmxvY2tTdGFydC5naWY%3D.YfW2WFVE7V$&67F'Bv?w=700&webp=1)
{
![(C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹 (C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuc2h1emhpZHVvLmNvbS8lRTUlQUQlQTYlRTQlQjklQTAvd2luZG93cyVFNSVBNCU5NiVFNSVBMyVCMyVFNyVCQyU5NiVFNyVBOCU4Qi8oQyMpV2luZG93cyBTaGVsbCDlpJblo7PnvJbnqIvns7vliJcxIC0g5Z+656GA77yM5rWP6KeI5LiA5Liq5paH5Lu25aS5IC0g5p+g5qqs55qEIC0g5Y2a5a6i5ZutX2ZpbGVzL0luQmxvY2suZ2lm.YfW2&6v?w=700&webp=1)
//获取显示名称
![(C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹 (C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuc2h1emhpZHVvLmNvbS8lRTUlQUQlQTYlRTQlQjklQTAvd2luZG93cyVFNSVBNCU5NiVFNSVBMyVCMyVFNyVCQyU5NiVFNyVBOCU4Qi8oQyMpV2luZG93cyBTaGVsbCDlpJblo7PnvJbnqIvns7vliJcxIC0g5Z+656GA77yM5rWP6KeI5LiA5Liq5paH5Lu25aS5IC0g5p+g5qqs55qEIC0g5Y2a5a6i5ZutX2ZpbGVzL0luQmxvY2suZ2lm.YfW2&6v?w=700&webp=1)
string name = API.GetNameByPIDL(pidlSub);
![(C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹 (C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuc2h1emhpZHVvLmNvbS8lRTUlQUQlQTYlRTQlQjklQTAvd2luZG93cyVFNSVBNCU5NiVFNSVBMyVCMyVFNyVCQyU5NiVFNyVBOCU4Qi8oQyMpV2luZG93cyBTaGVsbCDlpJblo7PnvJbnqIvns7vliJcxIC0g5Z+656GA77yM5rWP6KeI5LiA5Liq5paH5Lu25aS5IC0g5p+g5qqs55qEIC0g5Y2a5a6i5ZutX2ZpbGVzL0luQmxvY2suZ2lm.YfW2&6v?w=700&webp=1)
lvFile.Items.Add(name, 1);
![(C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹 (C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuc2h1emhpZHVvLmNvbS8lRTUlQUQlQTYlRTQlQjklQTAvd2luZG93cyVFNSVBNCU5NiVFNSVBMyVCMyVFNyVCQyU5NiVFNyVBOCU4Qi8oQyMpV2luZG93cyBTaGVsbCDlpJblo7PnvJbnqIvns7vliJcxIC0g5Z+656GA77yM5rWP6KeI5LiA5Liq5paH5Lu25aS5IC0g5p+g5qqs55qEIC0g5Y2a5a6i5ZutX2ZpbGVzL0V4cGFuZGVkU3ViQmxvY2tFbmQuZ2lm.YfW2WFVE7V$&6VBv?w=700&webp=1)
}
![(C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹 (C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuc2h1emhpZHVvLmNvbS8lRTUlQUQlQTYlRTQlQjklQTAvd2luZG93cyVFNSVBNCU5NiVFNSVBMyVCMyVFNyVCQyU5NiVFNyVBOCU4Qi8oQyMpV2luZG93cyBTaGVsbCDlpJblo7PnvJbnqIvns7vliJcxIC0g5Z+656GA77yM5rWP6KeI5LiA5Liq5paH5Lu25aS5IC0g5p+g5qqs55qEIC0g5Y2a5a6i5ZutX2ZpbGVzL0V4cGFuZGVkQmxvY2tFbmQuZ2lm.YfW2WFVD&6VBv?w=700&webp=1)
}
![(C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹 (C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuc2h1emhpZHVvLmNvbS8lRTUlQUQlQTYlRTQlQjklQTAvd2luZG93cyVFNSVBNCU5NiVFNSVBMyVCMyVFNyVCQyU5NiVFNyVBOCU4Qi8oQyMpV2luZG93cyBTaGVsbCDlpJblo7PnvJbnqIvns7vliJcxIC0g5Z+656GA77yM5rWP6KeI5LiA5Liq5paH5Lu25aS5IC0g5p+g5qqs55qEIC0g5Y2a5a6i5ZutX2ZpbGVzL05vbmUuZ2lm.YfW2Rv?w=700&webp=1)
![(C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹 (C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuc2h1emhpZHVvLmNvbS8lRTUlQUQlQTYlRTQlQjklQTAvd2luZG93cyVFNSVBNCU5NiVFNSVBMyVCMyVFNyVCQyU5NiVFNyVBOCU4Qi8oQyMpV2luZG93cyBTaGVsbCDlpJblo7PnvJbnqIvns7vliJcxIC0g5Z+656GA77yM5rWP6KeI5LiA5Liq5paH5Lu25aS5IC0g5p+g5qqs55qEIC0g5Y2a5a6i5ZutX2ZpbGVzL05vbmUuZ2lm.YfW2Rv?w=700&webp=1)
//获取子文件
![(C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹 (C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuc2h1emhpZHVvLmNvbS8lRTUlQUQlQTYlRTQlQjklQTAvd2luZG93cyVFNSVBNCU5NiVFNSVBMyVCMyVFNyVCQyU5NiVFNyVBOCU4Qi8oQyMpV2luZG93cyBTaGVsbCDlpJblo7PnvJbnqIvns7vliJcxIC0g5Z+656GA77yM5rWP6KeI5LiA5Liq5paH5Lu25aS5IC0g5p+g5qqs55qEIC0g5Y2a5a6i5ZutX2ZpbGVzL05vbmUuZ2lm.YfW2Rv?w=700&webp=1)
if (Root.EnumObjects(this.Handle, SHCONTF.NONFOLDERS | SHCONTF.INCLUDEHIDDEN, out folderEnumPtr) == API.S_OK)
![(C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹 (C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuc2h1emhpZHVvLmNvbS8lRTUlQUQlQTYlRTQlQjklQTAvd2luZG93cyVFNSVBNCU5NiVFNSVBMyVCMyVFNyVCQyU5NiVFNyVBOCU4Qi8oQyMpV2luZG93cyBTaGVsbCDlpJblo7PnvJbnqIvns7vliJcxIC0g5Z+656GA77yM5rWP6KeI5LiA5Liq5paH5Lu25aS5IC0g5p+g5qqs55qEIC0g5Y2a5a6i5ZutX2ZpbGVzL0V4cGFuZGVkQmxvY2tTdGFydC5naWY%3D.YfW2WFVD&67F'Bv?w=700&webp=1)
{
![(C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹 (C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuc2h1emhpZHVvLmNvbS8lRTUlQUQlQTYlRTQlQjklQTAvd2luZG93cyVFNSVBNCU5NiVFNSVBMyVCMyVFNyVCQyU5NiVFNyVBOCU4Qi8oQyMpV2luZG93cyBTaGVsbCDlpJblo7PnvJbnqIvns7vliJcxIC0g5Z+656GA77yM5rWP6KeI5LiA5Liq5paH5Lu25aS5IC0g5p+g5qqs55qEIC0g5Y2a5a6i5ZutX2ZpbGVzL0luQmxvY2suZ2lm.YfW2&6v?w=700&webp=1)
folderEnum = (IEnumIDList)Marshal.GetObjectForIUnknown(folderEnumPtr);
![(C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹 (C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuc2h1emhpZHVvLmNvbS8lRTUlQUQlQTYlRTQlQjklQTAvd2luZG93cyVFNSVBNCU5NiVFNSVBMyVCMyVFNyVCQyU5NiVFNyVBOCU4Qi8oQyMpV2luZG93cyBTaGVsbCDlpJblo7PnvJbnqIvns7vliJcxIC0g5Z+656GA77yM5rWP6KeI5LiA5Liq5paH5Lu25aS5IC0g5p+g5qqs55qEIC0g5Y2a5a6i5ZutX2ZpbGVzL0luQmxvY2suZ2lm.YfW2&6v?w=700&webp=1)
while (folderEnum.Next(1, out pidlSub, out celtFetched) == 0 && celtFetched == API.S_FALSE)
![(C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹 (C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuc2h1emhpZHVvLmNvbS8lRTUlQUQlQTYlRTQlQjklQTAvd2luZG93cyVFNSVBNCU5NiVFNSVBMyVCMyVFNyVCQyU5NiVFNyVBOCU4Qi8oQyMpV2luZG93cyBTaGVsbCDlpJblo7PnvJbnqIvns7vliJcxIC0g5Z+656GA77yM5rWP6KeI5LiA5Liq5paH5Lu25aS5IC0g5p+g5qqs55qEIC0g5Y2a5a6i5ZutX2ZpbGVzL0V4cGFuZGVkU3ViQmxvY2tTdGFydC5naWY%3D.YfW2WFVE7V$&67F'Bv?w=700&webp=1)
{
![(C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹 (C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuc2h1emhpZHVvLmNvbS8lRTUlQUQlQTYlRTQlQjklQTAvd2luZG93cyVFNSVBNCU5NiVFNSVBMyVCMyVFNyVCQyU5NiVFNyVBOCU4Qi8oQyMpV2luZG93cyBTaGVsbCDlpJblo7PnvJbnqIvns7vliJcxIC0g5Z+656GA77yM5rWP6KeI5LiA5Liq5paH5Lu25aS5IC0g5p+g5qqs55qEIC0g5Y2a5a6i5ZutX2ZpbGVzL0luQmxvY2suZ2lm.YfW2&6v?w=700&webp=1)
string name = API.GetNameByPIDL(pidlSub);
![(C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹 (C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuc2h1emhpZHVvLmNvbS8lRTUlQUQlQTYlRTQlQjklQTAvd2luZG93cyVFNSVBNCU5NiVFNSVBMyVCMyVFNyVCQyU5NiVFNyVBOCU4Qi8oQyMpV2luZG93cyBTaGVsbCDlpJblo7PnvJbnqIvns7vliJcxIC0g5Z+656GA77yM5rWP6KeI5LiA5Liq5paH5Lu25aS5IC0g5p+g5qqs55qEIC0g5Y2a5a6i5ZutX2ZpbGVzL0luQmxvY2suZ2lm.YfW2&6v?w=700&webp=1)
lvFile.Items.Add(name, 0);
![(C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹 (C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuc2h1emhpZHVvLmNvbS8lRTUlQUQlQTYlRTQlQjklQTAvd2luZG93cyVFNSVBNCU5NiVFNSVBMyVCMyVFNyVCQyU5NiVFNyVBOCU4Qi8oQyMpV2luZG93cyBTaGVsbCDlpJblo7PnvJbnqIvns7vliJcxIC0g5Z+656GA77yM5rWP6KeI5LiA5Liq5paH5Lu25aS5IC0g5p+g5qqs55qEIC0g5Y2a5a6i5ZutX2ZpbGVzL0V4cGFuZGVkU3ViQmxvY2tFbmQuZ2lm.YfW2WFVE7V$&6VBv?w=700&webp=1)
}
![(C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹 (C#)Windows Shell 外壳编程系列1 - 基础,浏览一个文件夹](https://image.shishitao.com:8440/aHR0cHM6Ly93d3cuc2h1emhpZHVvLmNvbS8lRTUlQUQlQTYlRTQlQjklQTAvd2luZG93cyVFNSVBNCU5NiVFNSVBMyVCMyVFNyVCQyU5NiVFNyVBOCU4Qi8oQyMpV2luZG93cyBTaGVsbCDlpJblo7PnvJbnqIvns7vliJcxIC0g5Z+656GA77yM5rWP6KeI5LiA5Liq5paH5Lu25aS5IC0g5p+g5qqs55qEIC0g5Y2a5a6i5ZutX2ZpbGVzL0V4cGFuZGVkQmxvY2tFbmQuZ2lm.YfW2WFVD&6VBv?w=700&webp=1)
}
事实上,代码到此结束。然而我发现有太多的结构体和枚举没有介绍(以后会有更多),有兴趣的朋友可以等待我下一节介绍