文档介绍:【转】C#打开目录并选中文件(夹)的实现
很久之前想把这个写下来的,谁知道用Firefox在博客园上在线编辑快完成时浏览器死掉,郁闷之下没有写了。今天突然想起,随便记录一下吧。
 
本文想讲的内容,如果你还不是很清楚,可以看看下图:
 
 
没错,就是想实现像上图中点击“查找目标”按钮一样的功能,即是打开目录并选中文件(夹)。有人可能会问,?当然,这是一种办法,不过,也许你更希望使用Windows中的某个API来实现,。那么,Windows中哪个API可以做到呢?,关于它的详细信息可以查看MSDN,需要注意的是这个API要在Windows XP及以上操作系统才支持。
 
如果你希望使用VC来实现,那么网上也有很多例子,并且支持Windows XP以下的操作系统,可是我在网上找不到C#实现的例子,或许有我没有找到,所以只好自己动手,丰衣足食了。
 
首先,C#:
 
        [DllImport("", ExactSpelling = true)]
        public static extern int SHOpenFolderAndSelectItems(
            IntPtr pidlFolder,
            uint cidl,
            [In, MarshalAs()] IntPtr[] apidl,
            uint dwFlags);
 
VC中的一些数据类型,中的IntPtr特定类型来代替行了,因为我们并不关心这些数据类型的数据,知道指针就OK了。SHOpenFolderAndSelectItems的第一个参数pidlFolder指你要查找的目标文件(夹)的PIDL,我们为了获取文件(夹)的PIDL,。那么我们需要创建IShellLink接口的一个实例,。创建的实例保存到指针,如下:
 
        [DllImport("", ExactSpelling = true)]
        public static extern int CoCreateInstance(
            [In] ref Guid rclsid,
            IntPtr pUnkOuter,
            CLSCTX dwClsContext,
            [In] ref Guid riid,
            [Out] out IntPtr ppv);
 
        public enum CLSCTX : uint
        {