請只回答問題 其他方面不迴應這個問題。C#獲取特殊文件夾
讓我重新開始。我如何使用這個擴展了內部Environment.GetSpecialFolder的類?
。我不希望specialroots
root = Environment.GetFolderPath(Environment.SpecialFolder)
,因爲我想用這個爲其他目的而不是.NET的。
例如我該如何調用(收藏夾= 6)通過一個按鈕的位置單擊?
public class EnvironmentFolders
{
public enum SpecialFolder
{
AdministrativeTools = 48,
//{user name}\Start Menu\Programs\Administrative Tools
ApplicationData = 26,
//{user name}\Application Data
CommonAdministrativeTools = 47,
//All Users\Start Menu\Programs\Administrative Tools
CommonApplicationData = 35,
//All Users\Application Data
CommonDesktopDirectory = 25,
//All Users\Desktop
CommonDocuments = 46,
//All Users\Documents
CommonFavorites = 31,
CommonNonLocalizedStartup = 30,
//non localized common startup
CommonPrograms = 23,
//All Users\Programs
CommonStartMenu = 22,
//All Users\Start Menu
CommonStartup = 24,
//All Users\Startup
CommonTemplates = 45,
//All Users\Templates
ControlPanel = 3,
//My Computer\Control Panel
Cookies = 33,
DesktopDirectory = 16,
//{user name}\Desktop
Favorites = 6,
//{user name}\Favorites
Fonts = 20,
//windows\fonts
History = 34,
InternetCache = 32,
LocalApplicationData = 28,
//{user name}\Local Settings\Application Data (non roaming)
MyDocuments = 5,
//My Documents
MyPictures = 39,
//C:\Program Files\My Pictures
NetworkShortcuts = 19,
//{user name}\nethood
NonLocalizedStartup = 29,
//non localized startup
Printers = 4,
//My Computer\Printers
PrintHood = 27,
//{user name}\PrintHood
ProgramFiles = 38,
//C:\Program Files
ProgramFilesCommon = 43,
//C:\Program Files\Common
Programs = 2,
//Start Menu\Programs
Recent = 8,
//{user name}\Recent
RecycleBin = 10,
//{desktop}\Recycle Bin
SendTo = 9,
//{user name}\SendTo
StartMenu = 11,
//{user name}\Start Menu
Startup = 7,
//Start Menu\Programs\Startup
System = 37,
//GetSystemDirectory()
Templates = 21,
UserProfile = 40,
//USERPROFILE
Windows = 36
//GetWindowsDirectory()
}
[DllImport("shfolder.dll", CharSet = CharSet.Auto)]
private static extern int SHGetFolderPath(IntPtr hwndOwner, int nFolder, IntPtr hToken, int dwFlags, StringBuilder lpszPath);
/// <summary>
/// Get an environment folder path for Windows environment folders
/// </summary>
/// <returns>A string pointing to the special path</returns>
/// <remarks></remarks>
public static string GetPath(SpecialFolder folder)
{
StringBuilder lpszPath = new StringBuilder(260);
SHGetFolderPath(IntPtr.Zero, (int)folder, IntPtr.Zero, 0, lpszPath);
return lpszPath.ToString();
}
}
使用interop來完成.NET可以獨立完成的任務嗎?這聽起來像一個C/C++程序員的副本,他們剛剛轉移到.NET,並且無法閱讀文檔。重構! – Aaronaught 2009-12-22 16:04:50
「例如,如何通過點擊按鈕來調用(收藏夾= 6)位置?」我們想要幫助,但不明白你的意思。它*聽起來像是在詢問如何使用'EnvironmentFolders'類來獲取當用戶點擊一個按鈕時當前用戶'收藏夾'文件夾的位置。 (在Windows窗體中?在ASP.NET頁面上?不知道。)這很讓人困惑,因爲我認爲所有三個答案都解釋了這一點。請嘗試重新提出問題,以便我們知道您想要做什麼。 – 2009-12-22 21:10:53