Example #1
0
    /// <summary>
    /// Select folder.
    /// </summary>
    /// <param name="owner">The owner.</param>
    /// <param name="remarkText">The remark text.</param>
    /// <returns></returns>
    public static string BrowserFolder(Window owner, string remarkText = "Select a folder")
    {
        var info = new LPBROWSEINFO();

        if (owner == null)
        {
            owner = ZHApp.FrameworkMainWindow;
        }
        if (owner != null)
        {
            var wih = new WindowInteropHelper(owner);
            info.hwndOwner = wih.Handle;
        }
        info.lpszTitle      = remarkText;
        info.pszDisplayName = string.Join(string.Empty, Enumerable.Range(0, 300).Select(c => (char)0));
        info.ulFlags        = 0x1 | 0x2 | 0x40;
        try
        {
            IntPtr pidl = SHBrowseForFolder(ref info);
            if (pidl == IntPtr.Zero)
            {
                return(null);
            }
            StringBuilder buf = new StringBuilder(1024);
            SHGetPathFromIDList(pidl, buf);
            return(buf.ToString());
        }
        catch
        {
            return(null);
        }
    }
Example #2
0
 static extern IntPtr SHBrowseForFolder(ref LPBROWSEINFO lpbi);