|
using System;
using System.Runtime.InteropServices;
public class WindowsExplorer
{
[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);
/// <summary>
/// 調(diào)用WindowsExploer 并返回所選文件夾路徑
/// </summary>
/// <param name="dialogtitle">打開對(duì)話框的標(biāo)題</param>
/// <returns>所選文件夾路徑</returns>
public static string GetPathFromWindowsExplorer(string dialogtitle = "請(qǐng)選擇下載路徑")
{
string res;
OpenDialogDir ofn2 = new OpenDialogDir();
ofn2.pszDisplayName = new string(new char[2000]); ; // 存放目錄路徑緩沖區(qū)
ofn2.lpszTitle = dialogtitle;// 標(biāo)題
ofn2.ulFlags = 0x00000040; // 新的樣式,帶編輯框
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;
}
}
|