赞
踩
引用外部库
using System
using System.Runtime.InteropServices
[DllImport("User32.dll", SetLastError = true, ThrowOnUnmappableChar = true, CharSet = CharSet.Auto)]
public static extern int Message(IntPtr handle, String message, String title, int type);
调用
在需要使用的脚本中调用 上述 Message 方法即可
例如 :Message (IntPtr.Zero, “弹框内容”, “确认”, 0);
using System; using System.Collections; using System.Collections.Generic; using System.Runtime.InteropServices; using UnityEngine; public class OpenFileToCK : MonoBehaviour { public void Open() { OpenDialogDir openDir = new OpenDialogDir(); openDir.pszDisplayName = new string(new char[2000]); openDir.lpszTitle = "文件夹选择"; openDir.ulFlags = 1;// BIF_NEWDIALOGSTYLE | BIF_EDITBOX; IntPtr pidl = DllOpenFileDialog.SHBrowseForFolder(openDir); char[] path = new char[2000]; for (int i = 0; i < 2000; i++) path[i] = '\0'; if (DllOpenFileDialog.SHGetPathFromIDList(pidl, path)) { string str = new string(path); string DirPath = str.Substring(0, str.IndexOf('\0')); Debug.Log("路径" + DirPath); } } private void DownLoadXls(string url ,string localPath) { HttpDldFile httpDldFile = new HttpDldFile(); StartCoroutine(httpDldFile.DownLoadEnum(url, localPath)); } } [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 = "123"; 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); }
using UnityEngine; using System.Collections; using System; using System.Runtime.InteropServices; [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)] public class OpenFileName { 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; } public class LocalDialog { [DllImport("Comdlg32.dll", SetLastError = true, ThrowOnUnmappableChar = true, CharSet = CharSet.Auto)] public static extern bool GetOpenFileName([In, Out] OpenFileName ofn); public static bool GetOFN([In, Out] OpenFileName ofn) { return GetOpenFileName(ofn); } [DllImport("Comdlg32.dll", SetLastError = true, ThrowOnUnmappableChar = true, CharSet = CharSet.Auto)] public static extern bool GetSaveFileName([In, Out] OpenFileName ofn); public static bool GetSFN([In, Out] OpenFileName ofn) { return GetSaveFileName(ofn); } }
private void Open() { OpenFileName openFileName = new OpenFileName(); openFileName.structSize = Marshal.SizeOf(openFileName); openFileName.filter = "ALL(*)\0*"; openFileName.file = new string(new char[256]); openFileName.maxFile = openFileName.file.Length; openFileName.fileTitle = new string(new char[64]); openFileName.maxFileTitle = openFileName.fileTitle.Length; //默认路径 可根据自己的需求修改 openFileName.initialDir = Application.streamingAssetsPath.Replace('/', '\\'); openFileName.title = "文件选择"; openFileName.flags = 0x00080000 | 0x00001000 | 0x00000800 | 0x00000008; if (LocalDialog.GetSaveFileName(openFileName)) { //Debug.Log(openFileName.file); //Debug.Log(openFileName.fileTitle); } }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。