Esempio n. 1
0
    /// <summary>
    /// 调用WindowsExploer 并返回所选文件夹路径
    /// </summary>
    /// <param name="dialogtitle">打开对话框的标题</param>
    /// <returns>所选文件夹路径</returns>
    public static string GetPathFromWindowsExplorer(string dialogtitle = "请选择下载路径")
    {
        string res;

        OpenDialogDir ofn2 = new OpenDialogDir();

        // 存放目录路径缓冲区
        ofn2.pszDisplayName = new string(new char[2000]);

        ofn2.pidlRoot = ILCreateFromPathW(Application.dataPath.Replace('/', '\\'));

        // 标题
        ofn2.lpszTitle = dialogtitle;

        // 新的样式,带编辑框
        ofn2.ulFlags = BIF_NEWDIALOGSTYLE;

        IntPtr pidlPtr = WindowsExplorer.SHBrowseForFolder(ofn2);

        char[] charArray = new char[2000];
        for (int i = 0; i < 2000; i++)
        {
            charArray[i] = '\0';
        }

        WindowsExplorer.SHGetPathFromIDList(pidlPtr, charArray);
        res = new String(charArray);
        res = res.Substring(0, res.IndexOf('\0'));
        return(res);
    }
Esempio n. 2
0
    public static string GetFileFromWindowsExplorer()
    {
        var backPath = "";

        OpenDialogFile openFileName = new OpenDialogFile();

        openFileName.structSize   = Marshal.SizeOf(openFileName);
        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.dataPath.Replace('/', '\\');//默认路径
        openFileName.title        = "打开文件";
        openFileName.flags        = 0x00080000 | 0x00001000 | 0x00000800 | 0x00000008;
        if (WindowsExplorer.GetSaveFileName(openFileName))
        {
            Debug.Log(openFileName.file);
            Debug.Log(openFileName.fileTitle);
            backPath = openFileName.file;
        }

        return(backPath);
    }