日期:2014-05-18 浏览次数:21327 次
 private void Form1_Load(object sender, EventArgs e)
        {
            imageList1.Images.Clear();
            treeView1.Nodes.Clear();
            foreach (string cpname in Directory.GetLogicalDrives())
            {
                if (cpname == "C:\\")
                {
                    continue;
                }
                Win32.SHFILEINFO shfi = new Win32.SHFILEINFO();
                DirectoryInfo dir = new DirectoryInfo(cpname);
                //获得图标
                Win32.SHGetFileInfo(cpname,
                                    (uint)0x80,
                                    ref shfi,
                                    (uint)System.Runtime.InteropServices.Marshal.SizeOf(shfi),
                                    (uint)(0x100 | 0x400)); //取得Icon和TypeName
                //添加图标
                imageList1.Images.Add(dir.Name, (Icon)Icon.FromHandle(shfi.hIcon).Clone());
                TreeNode node = new TreeNode(dir.Name);
                node.ImageIndex = imageList1.Images.Count - 1;
                node.SelectedImageIndex = imageList1.Images.Count - 1;
                node.Name = dir.FullName;
                treeView1.Nodes.Add(node);
                Win32.DestroyIcon(shfi.hIcon);
                node.Nodes.Add(lsnode);
                node.Tag = true;
            }
            treeView1.CollapseAll();
        }
/// <summary>
        /// 针对文件目录
        /// </summary>
        private void GetListViewItem(string path, TreeNode snode)
        {
            string[] dirs = Directory.GetDirectories(path);
            string[] files = Directory.GetFiles(path);
            Win32.SHFILEINFO shfi = new Win32.SHFILEINFO();
            for (int i = 0; i < dirs.Length; i++)
            {
                try
                {
                    DirectoryInfo dir = new DirectoryInfo(dirs[i]);
                    if (dir.Name == "auto.exe" || dir.Name == "Autorun.inf" || dir.Name == "RECYCLER" ||
                        dir.Name == "System Volume Information" || dir.Name == "$RECYCLE.BIN")
                        continue;
                    //获得图标
                    Win32.SHGetFileInfo(dirs[i],
                                        (uint)0x80,
                                        ref shfi,
                                        (uint)System.Runtime.InteropServices.Marshal.SizeOf(shfi),
                                        (uint)(0x100 | 0x400)); //取得Icon和TypeName
                    //添加图标
                    imageList1.Images.Add(dir.Name, (Icon)Icon.FromHandle(shfi.hIcon).Clone());
                    TreeNode node = new TreeNode(dir.Name);
                    node.Name = dir.FullName;
                    node.ImageIndex = imageList1.Images.Count - 1;
                    node.SelectedImageIndex = imageList1.Images.Count - 1;
                    node.Tag = true;
                    snode.Nodes.Add(node);
                    node.Nodes.Add(lsnode);
                    Win32.DestroyIcon(shfi.hIcon);
                }
                catch
                {
                }
            }
            for (int i = 0; i < files.Length; i++)
            {
                try
                {
                    FileInfo fi = new FileInfo(files[i]);
                    //获得图标
                    Win32.SHGetFileInfo(files[i],
                                        (uint)0x80,
                                        ref shfi,
                                        (uint)System.Runtime.InteropServices.Marshal.SizeOf