通过WinAPI打开文件夹浏览源码
来源:互联网 发布:考试搜题软件 编辑:程序博客网 时间:2024/05/16 06:31
通过调用WinApi打开Windows浏览文件夹.
调用方法:
DirectorySelect dir = new DirectorySelect();
string filePath = dir.GetDirectory();
string filePath = dir.GetDirectory();
源码:
- using System;
- using System.Collections.Generic;
- using System.Text;
- using System.Runtime.InteropServices;
- namespace Open.NetExam.Maker
- {
- public class DirectorySelect
- {
- [DllImport("Shell32.Dll", CharSet = CharSet.Auto)]
- private static extern IntPtr SHBrowseForFolder(ref BROWSEINFO lpbi);
- [DllImport("Shell32.DLL")]
- public static extern int SHGetPathFromIDList(IntPtr pidl, StringBuilder Path);
- private static readonly int MAX_PATH = 260;
- private enum BIF_Flags
- {
- BIF_RETURNONLYFSDIRS = 0x0001,
- BIF_DONTGOBELOWDOMAIN = 0x0002,
- BIF_STATUSTEXT = 0x0004,
- BIF_RETURNFSANCESTORS = 0x0008,
- BIF_EDITBOX = 0x0010,
- BIF_VALIDATE = 0x0020,
- BIF_NEWDIALOGSTYLE = 0x0040,
- BIF_USENEWUI = (BIF_NEWDIALOGSTYLE | BIF_EDITBOX),
- BIF_BROWSEINCLUDEURLS = 0x0080,
- BIF_UAHINT = 0x0100,
- BIF_NONEWFOLDERBUTTON = 0x0200,
- BIF_NOTRANSLATETARGETS = 0x0400,
- BIF_BROWSEFORCOMPUTER = 0x1000,
- BIF_BROWSEFORPRINTER = 0x2000,
- BIF_BROWSEINCLUDEFILES = 0x4000,
- BIF_SHAREABLE = 0x8000
- };
- private delegate int BrowseCallbackProc(IntPtr hwnd, UInt32 uMsg, UInt32
- lParam, UInt32 lpData);
- [System.Runtime.InteropServices.StructLayout(LayoutKind.Sequential,
- CharSet = CharSet.Auto)]
- private struct BROWSEINFO
- {
- public IntPtr hwndOwner;
- public UIntPtr pidlRoot;
- [MarshalAs(UnmanagedType.LPTStr)]
- public String pszDisplayName;
- [MarshalAs(UnmanagedType.LPTStr)]
- public String lpszTitle;
- [MarshalAs(UnmanagedType.U4)]
- public BIF_Flags ulFlags;
- [MarshalAs(UnmanagedType.FunctionPtr)]
- public BrowseCallbackProc lpfn;
- [MarshalAs(UnmanagedType.U4)]
- public UInt32 lParam;
- public Int32 iImage;
- }
- /// <summary>
- /// 选择目录对话框
- /// </summary>
- /// <returns>返回选择的目录路径</returns>
- public string GetDirectory()
- {
- BROWSEINFO bi = new BROWSEINFO();
- IntPtr pidlRet = IntPtr.Zero;
- pidlRet = SHBrowseForFolder(ref bi);
- if (pidlRet == IntPtr.Zero)
- {
- return string.Empty;
- }
- StringBuilder sb = new StringBuilder(MAX_PATH);
- if (0 == SHGetPathFromIDList(pidlRet, sb))
- {
- return string.Empty;
- }
- return sb.ToString();
- }
- }
- }
- 通过WinAPI打开文件夹浏览源码
- 打开浏览文件夹
- 浏览打开获取文件夹路径
- C# 打开文件夹浏览事件
- 在VC中打开浏览文件夹对话框
- MFC打开对话框和浏览文件夹操作
- VC打开浏览文件对话框、浏览文件夹对话框
- VC打开浏览文件对话框、浏览文件夹对话框
- 通过浏览器浏览本机文件夹
- winAPI之遍历文件夹
- vc打开文件夹浏览框显示指定位置
- MFC实现打开、保存文件对话框和浏览文件夹对话框
- VC++:打开、保存文件对话框和浏览文件夹对话框
- VC++打开、保存文件对话框和浏览文件夹对话框
- MFC实现打开、保存文件对话框和浏览文件夹对话框
- VC++:打开、保存文件对话框和浏览文件夹对话框
- MFC实现打开、保存文件对话框和浏览文件夹对话框
- MFC实现打开、保存文件对话框和浏览文件夹对话框(
- socket封包和拆包
- 关于你我的人生(佳作收藏)。
- TortoiseSVN - 项目属性 - tsvn:logminsize - 设置提交日志的最小长度
- DVD刻录速度突然变慢的原因及解决方法
- Internet Download Manager.5.14.Build.4.incl.Fixed-REA
- 通过WinAPI打开文件夹浏览源码
- C盘下这些系统文件的作用,以及系统的启动过程
- 拷贝文件
- 假期真好
- PIX 515E-R IOS升级
- C++与ANSI C函数原型差异——第七章(P186)
- 网站改进过程中必读的十条建议:
- session在JSP和Servlet中不一致问题
- test