[C#]Unity调用window窗口

来源:互联网 发布:网络客服招聘条件 编辑:程序博客网 时间:2024/06/05 07:31
using UnityEngine;using System.Collections;using System;using System.Runtime.InteropServices;namespace XRMaker.Editor{    /// <summary>    /// 参考    /// Url:http://www.cnblogs.com/U-tansuo/archive/2012/07/10/GetOpenFileName.html    /// Url:https://msdn.microsoft.com/en-us/library/windows/desktop/ff468808(v=vs.85).aspx    /// Url:https://msdn.microsoft.com/en-us/library/windows/desktop/bb776426(v=vs.85).aspx    /// Url:http://blog.csdn.net/cwj649956781/article/details/76218218    /// </summary>    public class WindowsForms    {        [DllImport("Comdlg32.dll", SetLastError = true, ThrowOnUnmappableChar = true, CharSet = CharSet.Auto)]        private static extern bool GetOpenFileName([In, Out] FileName ofn);        [DllImport("Comdlg32.dll", SetLastError = true, ThrowOnUnmappableChar = true, CharSet = CharSet.Auto)]        private static extern bool GetSaveFileName([In, Out] FileName ofd);        [DllImport("shell32.dll", SetLastError = true, ThrowOnUnmappableChar = true, CharSet = CharSet.Auto)]        private static extern IntPtr SHBrowseForFolder([In, Out] DirName ofn);        [DllImport("shell32.dll", SetLastError = true, ThrowOnUnmappableChar = true, CharSet = CharSet.Auto)]        private static extern bool SHGetPathFromIDList([In] IntPtr pidl, [In, Out] char[] fileName);        public static string Load(params string[] ext)        {            FileName i = new FileName(ext);            i.title = "打开";            GetOpenFileName(i);            return i.file;        }        public static string Save(string ext)        {            FileName i = new FileName(ext);            i.title = "保存";            GetSaveFileName(i);            return i.file;        }        public static string GetDir()        {            DirName d = new DirName();            IntPtr i = SHBrowseForFolder(d);            char[] c = new char[256];            SHGetPathFromIDList(i, c);            return new string(c);        }        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]        private class DirName        {            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 DirName()            {                pszDisplayName = new string(new char[256]);                ulFlags = 0x00000040 | 0x00000010; //BIF_NEWDIALOGSTYLE | BIF_EDITBOX;                lpszTitle = "打开目录";            }        }        [StructLayout(LayoutKind.Sequential, CharSet = CharSet.Auto)]        private class FileName        {            public int structSize = 0;            private IntPtr dlgOwner = IntPtr.Zero;            private IntPtr instance = IntPtr.Zero;            private string filter = null;            private string customFilter = null;            private int maxCustFilter = 0;            private int filterIndex = 0;            public string file { get; set; }            private int maxFile = 0;            public string fileTitle { get; set; }            private int maxFileTitle = 0;            public string initialDir { get; set; }            public string title { get; set; }            private int flags = 0;            private short fileOffset = 0;            private short fileExtension = 0;            private string defExt = null;            private IntPtr custData = IntPtr.Zero;            private IntPtr hook = IntPtr.Zero;            private string templateName = null;            private IntPtr reservedPtr = IntPtr.Zero;            private int reservedInt = 0;            private int flagsEx = 0;            public FileName(params string[] ext)            {                structSize = Marshal.SizeOf(this);                defExt = ext[0];                string n = null;                string e = null;                foreach (string _e in ext)                {                    if (_e == "*")                    {                        n += "All Files";                        e += "*.*;";                    }                    else                    {                        string _n = "." + _e + ";";                        n += _n;                        e += "*" + _n;                    }                }                n = n.Substring(0, n.Length - 1);                filter = n + "\0" + e + "\0";                file = new string(new char[256]);                maxFile = file.Length;                fileTitle = new string(new char[64]);                maxFileTitle = fileTitle.Length;                //flags = 0x00080000 | 0x00001000 | 0x00000800 | 0x00000200 | 0x00000008;//OFN_EXPLORER|OFN_FILEMUSTEXIST|OFN_PATHMUSTEXIST| OFN_ALLOWMULTISELECT|OFN_NOCHANGEDIR                flags = 0x00080000 | 0x00001000 | 0x00000800 | 0x00000008;                initialDir = Application.dataPath;            }        }    }}

原创粉丝点击