在网上找不到比较全的,干脆自己做,现贡献出来。
unit Utils;
interface
uses
Windows, SysUtils, ShlObj;
type
TSpecialFolder = (
sfDesktop, // <desktop>
sfInternet, // Internet Explorer (icon on desktop)
sfPrograms, // Start Menu\Programs
sfControls, // My Computer\Control Panel
sfPrinters, // My Computer\Printers
sfPersonal, // My Documents
sfFavorites, // <user name>\Favorites
sfStartup, // Start Menu\Programs\Startup
sfRecent, // <user name>\Recent
sfSendTo, // <user name>\SendTo
sfBitBucket, // <desktop>\Recycle Bin
sfStartMenu, // <user name>\Start Menu
sfMyDocuments, // logical "My Documents" desktop icon
sfMyMusic, // "My Music" folder
sfMyVideo, // "My Videos" folder
sfDesktopDirectory, // <user name>\Desktop
sfDrives, // My Computer
sfNetwork, // Network Neighborhood (My Network Places)
sfNethood, // <user name>\nethood
sfFonts, // windows\fonts
sfTemplates, // <user name>\Templates
sfCommonStartMenu, // All Users\Start Menu
sfCommonPrograms, // All Users\Start Menu\Programs
sfCommonStartup, // All Users\Startup
sfCommonDesktopDirectory, // All Users\Desktop
sfAppData, // <user name>\Application Data
sfPrinthood, // <user name>\PrintHood
sfLocalAppData, // <user name>\Local Settings\Applicaiton Data (non roaming)
sfALTStartup, // non localized startup
sfCommonALTStartup, // non localized common startup
sfCommonFavorites, // All Users\Favorites
sfInternetCache, // <user name>\Local Settings\Temporary Internet Files
sfCookies, // <user name>\Cookies
sfHistory, // <user name>\Local Settings\History
sfCommonAppData, // All Users\Application Data
sfWindows, // GetWindowsDirectory()
sfSystem, // GetSystemDirectory()
sfProgramFiles, // C:\Program Files
sfMyPictures, // C:\Program Files\My Pictures
sfProfile, // USERPROFILE
sfSystemX86, // x86 system directory on RISC
sfProgramFilesX86, // x86 C:\Program Files on RISC
sfProgramFilesCommon, // C:\Program Files\Common
sfProgramFilesCommonX86, // x86 Program Files\Common on RISC
sfCommonTemplates, // All Users\Templates
sfCommonDocuments, // All Users\Documents
sfCommonAdminTools, // All Users\Start Menu\Programs\Administrative Tools
sfAdminTools, // <user name>\Start Menu\Programs\Administrative Tools
sfConnections, // Network and Dial-up Connections
sfCommonMusic, // All Users\My Music
sfCommonPictures, // All Users\My Pictures
sfCommonVideo, // All Users\My Video
sfResources, // Resource Direcotry
sfResourcesLocalized, // Localized Resource Direcotry
sfCommonOEMLinks, // Links to All Users OEM specific apps
sfCDBurnArea, // USERPROFILE\Local Settings\Application Data\Microsoft\CD Burning
sfComputersNearMe // Computers Near Me (computered from Workgroup membership)
);
function GetSpecialFolder(SpecialFolder: TSpecialFolder): string;
implementation
function GetSpecialFolder(SpecialFolder: TSpecialFolder): string;
const
SpecialFolderValues: array[TSpecialFolder] of Integer = ($0000, $0001, $0002,
$0003, $0004, $0005, $0006, $0007, $0008, $0009, $000a, $000b, $000c, $000d,
$000e, $0010, $0011, $0012, $0013, $0014, $0015, $0016, $0017, $0018, $0019,
$001a, $001b, $001c, $001d, $001e, $001f, $0020, $0021, $0022, $0023, $0024,
$0025, $0026, $0027, $0028, $0029, $002a, $002b, $002c, $002d, $002e, $002f,
$0030, $0031, $0035, $0036, $0037, $0038, $0039, $003a, $003b, $003d);
var
ItemIDList: PItemIDList;
Buffer: array [0..MAX_PATH] of Char;
begin
SHGetSpecialFolderLocation(0, SpecialFolderValues[SpecialFolder], ItemIDList);
SHGetPathFromIDList(ItemIDList, Buffer);
Result := StrPas(Buffer);
end;
end.