const
// registry entries for special paths are kept in :
REGSTR_PATH_SPECIAL_FOLDERS = REGSTR_PATH_EXPLORER + '\Shell Folders';
{$EXTERNALSYM REGSTR_PATH_SPECIAL_FOLDERS}
CSIDL_DESKTOP = $0000; // <desktop>
{$EXTERNALSYM CSIDL_DESKTOP}
CSIDL_INTERNET = $0001; // Internet Explorer (icon on desktop)
{$EXTERNALSYM CSIDL_INTERNET}
CSIDL_PROGRAMS = $0002; // Start Menu\Programs
{$EXTERNALSYM CSIDL_PROGRAMS}
CSIDL_CONTROLS = $0003; // My Computer\Control Panel
{$EXTERNALSYM CSIDL_CONTROLS}
CSIDL_PRINTERS = $0004; // My Computer\Printers
{$EXTERNALSYM CSIDL_PRINTERS}
CSIDL_PERSONAL = $0005; // My Documents
{$EXTERNALSYM CSIDL_PERSONAL}
CSIDL_FAVORITES = $0006; // <user name>\Favorites
{$EXTERNALSYM CSIDL_FAVORITES}
CSIDL_STARTUP = $0007; // Start Menu\Programs\Startup
{$EXTERNALSYM CSIDL_STARTUP}
CSIDL_RECENT = $0008; // <user name>\Recent
{$EXTERNALSYM CSIDL_RECENT}
CSIDL_SENDTO = $0009; // <user name>\SendTo
{$EXTERNALSYM CSIDL_SENDTO}
CSIDL_BITBUCKET = $000a; // <desktop>\Recycle Bin
{$EXTERNALSYM CSIDL_BITBUCKET}
CSIDL_STARTMENU = $000b; // <user name>\Start Menu
{$EXTERNALSYM CSIDL_STARTMENU}
CSIDL_MYDOCUMENTS = CSIDL_PERSONAL; // Personal was just a silly name for My Documents
{$EXTERNALSYM CSIDL_MYDOCUMENTS}
CSIDL_MYMUSIC = $000d; // "My Music" folder
{$EXTERNALSYM CSIDL_MYMUSIC}
CSIDL_MYVIDEO = $000e; // "My Videos" folder
{$EXTERNALSYM CSIDL_MYVIDEO}
CSIDL_DESKTOPDIRECTORY = $0010; // <user name>\Desktop
{$EXTERNALSYM CSIDL_DESKTOPDIRECTORY}
CSIDL_DRIVES = $0011; // My Computer
{$EXTERNALSYM CSIDL_DRIVES}
CSIDL_NETWORK = $0012; // Network Neighborhood (My Network Places)
{$EXTERNALSYM CSIDL_NETWORK}
CSIDL_NETHOOD = $0013; // <user name>\nethood
{$EXTERNALSYM CSIDL_NETHOOD}
CSIDL_FONTS = $0014; // windows\fonts
{$EXTERNALSYM CSIDL_FONTS}
CSIDL_TEMPLATES = $0015;
{$EXTERNALSYM CSIDL_TEMPLATES}
CSIDL_COMMON_STARTMENU = $0016; // All Users\Start Menu
{$EXTERNALSYM CSIDL_COMMON_STARTMENU}
CSIDL_COMMON_PROGRAMS = $0017; // All Users\Start Menu\Programs
{$EXTERNALSYM CSIDL_COMMON_PROGRAMS}
CSIDL_COMMON_STARTUP = $0018; // All Users\Startup
{$EXTERNALSYM CSIDL_COMMON_STARTUP}
CSIDL_COMMON_DESKTOPDIRECTORY = $0019; // All Users\Desktop
{$EXTERNALSYM CSIDL_COMMON_DESKTOPDIRECTORY}
CSIDL_APPDATA = $001a; // <user name>\Application Data
{$EXTERNALSYM CSIDL_APPDATA}
CSIDL_PRINTHOOD = $001b; // <user name>\PrintHood
{$EXTERNALSYM CSIDL_PRINTHOOD}
CSIDL_LOCAL_APPDATA = $001c; // <user name>\Local Settings\Applicaiton Data (non roaming)
{$EXTERNALSYM CSIDL_LOCAL_APPDATA}
CSIDL_ALTSTARTUP = $001d; // non localized startup
{$EXTERNALSYM CSIDL_ALTSTARTUP}
CSIDL_COMMON_ALTSTARTUP = $001e; // non localized common startup
{$EXTERNALSYM CSIDL_COMMON_ALTSTARTUP}
CSIDL_COMMON_FAVORITES = $001f;
{$EXTERNALSYM CSIDL_COMMON_FAVORITES}
CSIDL_INTERNET_CACHE = $0020; //C:\Users\Admin\AppData\Local\Microsoft\Windows\INetCache
{$EXTERNALSYM CSIDL_INTERNET_CACHE}
CSIDL_COOKIES = $0021;
{$EXTERNALSYM CSIDL_COOKIES}
CSIDL_HISTORY = $0022;
{$EXTERNALSYM CSIDL_HISTORY}
CSIDL_COMMON_APPDATA = $0023; // All Users\Application Data
{$EXTERNALSYM CSIDL_COMMON_APPDATA}
CSIDL_WINDOWS = $0024; // GetWindowsDirectory()
{$EXTERNALSYM CSIDL_WINDOWS}
CSIDL_SYSTEM = $0025; // GetSystemDirectory()
{$EXTERNALSYM CSIDL_SYSTEM}
CSIDL_PROGRAM_FILES = $0026; // C:\Program Files
{$EXTERNALSYM CSIDL_PROGRAM_FILES}
CSIDL_MYPICTURES = $0027; // C:\Program Files\My Pictures
{$EXTERNALSYM CSIDL_MYPICTURES}
CSIDL_PROFILE = $0028; // USERPROFILE
{$EXTERNALSYM CSIDL_PROFILE}
CSIDL_SYSTEMX86 = $0029; // x86 system directory on RISC
{$EXTERNALSYM CSIDL_SYSTEMX86}
CSIDL_PROGRAM_FILESX86 = $002a; // x86 C:\Program Files on RISC
{$EXTERNALSYM CSIDL_PROGRAM_FILESX86}
CSIDL_PROGRAM_FILES_COMMON = $002b; // C:\Program Files\Common
{$EXTERNALSYM CSIDL_PROGRAM_FILES_COMMON}
CSIDL_PROGRAM_FILES_COMMONX86 = $002c; // x86 Program Files\Common on RISC
{$EXTERNALSYM CSIDL_PROGRAM_FILES_COMMONX86}
CSIDL_COMMON_TEMPLATES = $002d; // All Users\Templates
{$EXTERNALSYM CSIDL_COMMON_TEMPLATES}
CSIDL_COMMON_DOCUMENTS = $002e; // All Users\Documents
{$EXTERNALSYM CSIDL_COMMON_DOCUMENTS}
CSIDL_COMMON_ADMINTOOLS = $002f; // All Users\Start Menu\Programs\Administrative Tools
{$EXTERNALSYM CSIDL_COMMON_ADMINTOOLS}
CSIDL_ADMINTOOLS = $0030; // <user name>\Start Menu\Programs\Administrative Tools
{$EXTERNALSYM CSIDL_ADMINTOOLS}
CSIDL_CONNECTIONS = $0031; // Network and Dial-up Connections
{$EXTERNALSYM CSIDL_CONNECTIONS}
CSIDL_COMMON_MUSIC = $0035; // All Users\My Music
{$EXTERNALSYM CSIDL_COMMON_MUSIC}
CSIDL_COMMON_PICTURES = $0036; // All Users\My Pictures
{$EXTERNALSYM CSIDL_COMMON_PICTURES}
CSIDL_COMMON_VIDEO = $0037; // All Users\My Video
{$EXTERNALSYM CSIDL_COMMON_VIDEO}
CSIDL_RESOURCES = $0038; // Resource Direcotry
{$EXTERNALSYM CSIDL_RESOURCES}
CSIDL_RESOURCES_LOCALIZED = $0039; // Localized Resource Direcotry
{$EXTERNALSYM CSIDL_RESOURCES_LOCALIZED}
CSIDL_COMMON_OEM_LINKS = $003a; // Links to All Users OEM specific apps
{$EXTERNALSYM CSIDL_COMMON_OEM_LINKS}
CSIDL_CDBURN_AREA = $003b; // USERPROFILE\Local Settings\Application Data\Microsoft\CD Burning
{$EXTERNALSYM CSIDL_CDBURN_AREA}
// unused 0x003c
CSIDL_COMPUTERSNEARME = $003d; // Computers Near Me (computered from Workgroup membership)
{$EXTERNALSYM CSIDL_COMPUTERSNEARME}
CSIDL_FLAG_CREATE = $8000; // combine with CSIDL_ value to force folder creation in SHGetFolderPath()
{$EXTERNALSYM CSIDL_FLAG_CREATE}
CSIDL_FLAG_DONT_VERIFY = $4000; // combine with CSIDL_ value to return an unverified folder path
{$EXTERNALSYM CSIDL_FLAG_DONT_VERIFY}
CSIDL_FLAG_DONT_UNEXPAND = $2000; // combine with CSIDL_ value to avoid unexpanding environment variables
{$EXTERNALSYM CSIDL_FLAG_DONT_UNEXPAND}
CSIDL_FLAG_NO_ALIAS = $1000; // combine with CSIDL_ value to insure non-alias versions of the pidl
{$EXTERNALSYM CSIDL_FLAG_NO_ALIAS}
CSIDL_FLAG_PER_USER_INIT = $0800; // combine with CSIDL_ value to indicate per-user init (eg. upgrade)
{$EXTERNALSYM CSIDL_FLAG_PER_USER_INIT}
CSIDL_FLAG_MASK = $FF00; // mask for all possible flag values
{$EXTERNALSYM CSIDL_FLAG_MASK}
uses
Vcl.ExtActns,Winapi.ShlObj, Winapi.ActiveX, System.Win.ComObj,
ShellApi,Winapi.Windows;
function GetSpecialFolderDir(const folderid: integer): string;
var
pidl: pItemIDList;
buffer: array[0..255] of char;
begin
SHGetSpecialFolderLocation(0, folderid, pidl);
SHGetPathFromIDList(pidl, buffer);
Result := strpas(buffer);
end;
//C:\Users\Admin\AppData\Local\Microsoft\Windows\INetCache
procedure TForm1.Button2Click(Sender: TObject);
begin
eDIT1.Text:=GetSpecialFolderDir( CSIDL_INTERNET_CACHE );
end;
获取WINDOWS特殊文件夹
unit Unit1;
interface
uses
Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;
type
TForm1 = class(TForm)
Button1: TButton;
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
uses shlobj;
{$R *.dfm}
function GetSpecialFolderDir(const folderid:integer):string;
var
pidl:pItemIDList;
buffer:array [ 0..255 ] of char ;
begin
SHGetSpecialFolderLocation( application.Handle , folderid, pidl);
SHGetPathFromIDList(pidl, buffer);
Result:=strpas(buffer);
end;
procedure TForm1.Button1Click(Sender: TObject);
var
DataBaseFolder:string;
begin
{GetSpecialFolderDir( CSIDL_PERSONAL )
= D:\Administrator\Documents}
{D:\Administrator\Documents\DataBase}
DataBaseFolder:=GetSpecialFolderDir( CSIDL_PERSONAL ) + '\DataBase';
if not DirectoryExists(DataBaseFolder) then
if not CreateDir(DataBaseFolder) then
Application.MessageBox('创建数据文件夹失败','错误',MB_ICONERROR);
end;
end.
打 '*'
号的为不是真正的文件系统 ,应该用作它用。
CSIDL_BITBUCKET * 回收站
CSIDL_CONTROLS * 控制面板
CSIDL_DESKTOP * 桌面
CSIDL_DESKTOPDIRECTORY 桌面目录 // 如 C:\WINDOWS\Desktop
CSIDL_DRIVES * 我的电脑
CSIDL_FONTS 字体 // 如 C:\WINDOWS\FONTS
CSIDL_NETHOOD 网上邻居目录 // 如 C:\WINDOWS\NetHood
CSIDL_NETWORK * 网上邻居
CSIDL_PERSONAL 我的文档 // 如 C:\My Documents
CSIDL_PRINTERS * 打印机
CSIDL_PROGRAMS 程序组 // 如 C:\WINDOWS\Start Menu\Programs
CSIDL_RECENT 最近文档 // 如 C:\WINDOWS\Recent
CSIDL_SENDTO 发送到 // 如 C:\WINDOWS\SentTo
CSIDL_STARTMENU 开始菜单 // 如 C:\WINDOWS\Start Menu
CSIDL_STARTUP 启动 // 如 C:\WINDOWS\ 启动
CSIDL_TEMPLATES 模版 // 如 C:\WINDOWS\ShellNew
相关文章
- 10-04C#实现获取并操作(启动、暂停、重启、停止)某台电脑 Windows 服务
- 10-04jsp获取当前目录下的文件和目录,获取windows盘符
- 10-04获取应用程序根目录物理路径(Web and Windows)
- 10-04c# – 如何在Windows 8.1中获取MessageBox图标
- 10-04获取当前文件夹下所有xlsx文件
- 10-044. 获取当前的文件夹的路径,以及当前文件名的路径 os.path.realpath
- 10-04windows cmd命令行下创建文件和文件夹
- 10-04Delphi中三种方法获取Windows任务栏的高度
- 10-04windows批量创建文件夹
- 10-04Hive 特殊日期获取 tips