unity3d调用windows系统dialog选择文件夹的方法
来源:互联网 发布:s7200编程视频 编辑:程序博客网 时间:2024/06/14 11:08
本来想百度找这个功能,百度了半天所有方法都试遍了,发现都只有选择文件和保存文件的方法,没有找到选择文件夹的方法,尼玛。
我只好参照选择文件的写法也写了个,看看能不能成功,果然成功了,我日!贴出来给大家参考吧。
[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]public class OpenDialogFile{ public int structSize = 0; public IntPtr dlgOwner = IntPtr.Zero; public IntPtr instance = IntPtr.Zero; public String filter = null; public String customFilter = null; public int maxCustFilter = 0; public int filterIndex = 0; public String file = null; public int maxFile = 0; public String fileTitle = null; public int maxFileTitle = 0; public String initialDir = null; public String title = null; public int flags = 0; public short fileOffset = 0; public short fileExtension = 0; public String defExt = null; public IntPtr custData = IntPtr.Zero; public IntPtr hook = IntPtr.Zero; public String templateName = null; public IntPtr reservedPtr = IntPtr.Zero; public int reservedInt = 0; public int flagsEx = 0;}[StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]public class OpenDialogDir{ public IntPtr hwndOwner = IntPtr.Zero; public IntPtr pidlRoot = IntPtr.Zero; public String pszDisplayName = null; public String lpszTitle = null; public UInt32 ulFlags = 0; public IntPtr lpfn = IntPtr.Zero; public IntPtr lParam = IntPtr.Zero; public int iImage = 0;}public class DllOpenFileDialog{ [DllImport("Comdlg32.dll", SetLastError = true, ThrowOnUnmappableChar = true, CharSet = CharSet.Auto)] public static extern bool GetOpenFileName([In, Out] OpenDialogFile ofn); [DllImport("Comdlg32.dll", SetLastError = true, ThrowOnUnmappableChar = true, CharSet = CharSet.Auto)] public static extern bool GetSaveFileName([In, Out] OpenDialogFile ofn); [DllImport("shell32.dll", SetLastError = true, ThrowOnUnmappableChar = true, CharSet = CharSet.Auto)] public static extern IntPtr SHBrowseForFolder([In, Out] OpenDialogDir ofn); [DllImport("shell32.dll", SetLastError = true, ThrowOnUnmappableChar = true, CharSet = CharSet.Auto)] public static extern bool SHGetPathFromIDList([In] IntPtr pidl, [In, Out] char[] fileName); }
使用如下:
OpenDialogDir ofn2 = new OpenDialogDir(); ofn2.pszDisplayName = new string(new char[2000]); ; // 存放目录路径缓冲区 ofn2.lpszTitle = "Open Project";// 标题 //ofn2.ulFlags = BIF_NEWDIALOGSTYLE | BIF_EDITBOX; // 新的样式,带编辑框 IntPtr pidlPtr = DllOpenFileDialog.SHBrowseForFolder(ofn2); char[] charArray = new char[2000]; for (int i = 0; i < 2000;i++ ) charArray[i] = '\0'; DllOpenFileDialog.SHGetPathFromIDList(pidlPtr, charArray); string fullDirPath = new String(charArray);
fullDirPath = fullDirPath.Substring(0, fullDirPath.IndexOf('\0'));
Log.Debug(fullDirPath);//这个就是选择的目录路径。
拿走不谢( ̄_, ̄ )
阅读全文
0 0
- unity3d调用windows系统dialog选择文件夹的方法
- VBA调用系统文件夹选择的窗口
- Unity3D中的系统调用方法
- Unity3D调用系统窗口选择本地文件
- VB 调用系统API 选择文件夹 代码
- 调用系统对话框,选择指定文件夹路径
- unity3d中的几个系统自调用的方法
- 调用Windows Mobile系统程序的方法
- 完全控制Windows 7的系统文件夹的方法
- Windows系统下查看已共享的文件夹的方法
- Windows系统中将“文件夹选项”对话框变成非模态的方法
- windows下 为unix系统共享文件夹的方法
- Ubuntu虚拟机访问宿主Windows系统文件夹的方法
- windows 7系统文件夹管理员权限的获取方法
- windows系统下,Java访问共享文件夹的方法
- windows系统下,Java访问共享文件夹的方法
- windows 7系统文件夹管理员权限的获取方法
- Ubuntu系统访问Windows共享文件夹的方法
- Material Design控件使用(一)
- 牛客一模:编程题
- C语言之链表栈
- 利用numpy和pandas处理csv文件中的时间
- C#虚基类继承与接口的区别
- unity3d调用windows系统dialog选择文件夹的方法
- cannot be read or is not a valid ZIP file
- 25-总结-【cartographer源码分析】系列的第三部分【sensor源码分析】
- Android Okhttp工具类的封装
- 数据结构实验之图论一:基于邻接矩阵的广度优先搜索遍历
- 剑指offer 之 两个栈来实现一个队列
- Material Design控件使用(二)
- 设计模式第七种原则
- 毛驴和萝卜问题