|
@@ -0,0 +1,98 @@
|
|
|
+using System;
|
|
|
+using System.Collections;
|
|
|
+using System.Collections.Generic;
|
|
|
+using System.Runtime.InteropServices;
|
|
|
+using UnityEngine;
|
|
|
+using UnityEngine.UI;
|
|
|
+
|
|
|
+//文件管理类
|
|
|
+public class FileManager
|
|
|
+{
|
|
|
+ [DllImport("user32.dll")]
|
|
|
+ private static extern IntPtr GetActiveWindow();
|
|
|
+ //新建项目文件
|
|
|
+ public static string CreatFolder(string InpF)
|
|
|
+ {
|
|
|
+
|
|
|
+ //使用如下:
|
|
|
+ OpenDialogDir ofn2 = new OpenDialogDir();
|
|
|
+ ofn2.pszDisplayName = new string(new char[2048]); ; // 存放目录路径缓冲区
|
|
|
+ ofn2.lpszTitle = "选择保存路径";// 标题
|
|
|
+ //ofn2.ulFlags = BIF_NEWDIALOGSTYLE | BIF_EDITBOX; // 新的样式,带编辑框
|
|
|
+ //IntPtr pidlPtr = IntPtr.Zero;
|
|
|
+ IntPtr pidlPtr = DllOpenFileDialog.SHBrowseForFolder(ofn2);
|
|
|
+
|
|
|
+ char[] charArray = new char[2048];
|
|
|
+ for (int i = 0; i < 2048; i++)
|
|
|
+ charArray[i] = '\0';
|
|
|
+
|
|
|
+ DllOpenFileDialog.SHGetPathFromIDList(pidlPtr, charArray);
|
|
|
+ string fullDirPath = new String(charArray);
|
|
|
+ fullDirPath = fullDirPath.Substring(0, fullDirPath.IndexOf('\0'));
|
|
|
+
|
|
|
+ Debug.Log(fullDirPath);//这个就是选择的目录路径
|
|
|
+ InpF = fullDirPath;
|
|
|
+ return InpF;
|
|
|
+ }
|
|
|
+
|
|
|
+ //读取文件
|
|
|
+ public void OpenFile()
|
|
|
+ {
|
|
|
+
|
|
|
+ }
|
|
|
+}
|
|
|
+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);
|
|
|
+
|
|
|
+}
|
|
|
+
|
|
|
+
|