您的位置:首页 > 编程语言 > Delphi

Delphi获取系统特殊路径

2013-07-23 15:12 351 查看
unit DemoMain;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, ShlObj, ComCtrls, StdCtrls, Registry;

type
TForm1 = class(TForm)
ListView1: TListView;
Button1: TButton;
Edit1: TEdit;
Button2: TButton;
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
private
procedure AddListItem(LCaption, LSubItem: string);
procedure AddToListView;
function GetSpecialFolderDir(const folderid: integer): string;
function GetMyDocPath: string;
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

{ TForm1 }

procedure TForm1.AddListItem(LCaption, LSubItem: string);
var
I: TListItem;
begin
i := ListView1.Items.Add;
i.Caption := LCaption;
i.SubItems.Add(LSubItem);
end;

procedure TForm1.AddToListView;
begin
AddListItem('桌面', GetSpecialFolderDir(0));
AddListItem('所有用户桌面', GetSpecialFolderDir(25));
AddListItem('开始菜单程序', GetSpecialFolderDir(2));
AddListItem('所有用户开始菜单程序', GetSpecialFolderDir(23));
AddListItem('我的文档', GetSpecialFolderDir(5));
AddListItem('收藏夹', GetSpecialFolderDir(6));
AddListItem('所以用户收藏夹', GetSpecialFolderDir(31));
AddListItem('启动文件夹', GetSpecialFolderDir(7));
AddListItem('所有用户启动文件夹', GetSpecialFolderDir(24));
AddListItem('Recent文件夹', GetSpecialFolderDir(8));
AddListItem('发送到', GetSpecialFolderDir(9));
AddListItem('登陆用户开始菜单', GetSpecialFolderDir(11));
AddListItem('所有用户开始菜单', GetSpecialFolderDir(22));
AddListItem('网上邻居', GetSpecialFolderDir(19));
AddListItem('字体文件夹', GetSpecialFolderDir(20));
AddListItem('Template文件夹', GetSpecialFolderDir(21));
AddListItem('所有用户Template文件夹', GetSpecialFolderDir(45));
AddListItem('ApplicaionData 文件夹', GetSpecialFolderDir(26));
AddListItem('打印文件夹', GetSpecialFolderDir(27));
AddListItem('当前用户本地应用程序设置文件夹', GetSpecialFolderDir(28));
AddListItem('Internet临时文件夹', GetSpecialFolderDir(32));
AddListItem('Internet缓存文件夹', GetSpecialFolderDir(33));
AddListItem('当前用户历史文件夹', GetSpecialFolderDir(34));
AddListItem('所有用户应用程序设置文件夹', GetSpecialFolderDir(35));
AddListItem('Windows系统目录', GetSpecialFolderDir(36));
AddListItem('程序文件夹', GetSpecialFolderDir(38));
AddListItem('System32系统目录', GetSpecialFolderDir(37));
AddListItem('当前用户图片收藏夹', GetSpecialFolderDir(39));
AddListItem('当前用户文件夹', GetSpecialFolderDir(40));
AddListItem('公共文件夹', GetSpecialFolderDir(43));
AddListItem('管理工具', GetSpecialFolderDir(47));
AddListItem('登陆用户管理工具', GetSpecialFolderDir(48));
AddListItem('所有用户图片收藏夹', GetSpecialFolderDir(54));
AddListItem('所有用户视频收藏夹', GetSpecialFolderDir(55));
AddListItem('主题资源文件夹', GetSpecialFolderDir(56));
AddListItem('CD Burning', GetSpecialFolderDir(59));
end;

function TForm1.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);
begin
AddToListView;
end;

function TForm1.GetMyDocPath: string;
var
Reg: TRegistry;
begin
Reg := TRegistry.Create;
try
Reg.RootKey := HKEY_CURRENT_USER;
if Reg.OpenKey('Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders', False) then
Result := Reg.ReadString('Personal')
finally
Reg.CloseKey;
Reg.Free;
end;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
Edit1.Text := GetMyDocPath;
end;

end.


WinAPI: GetTempPath - 获取临时文件夹路径

//声明:
GetTempPath(
nBufferLength: DWORD; {缓冲区大小}
lpBuffer: PChar       {缓冲区}
): DWORD;               {返回实际长度}

//举例:
var
arr: array[0..MAX_PATH] of Char;
num: DWORD;
TempPath, TempFileName: string;
begin
num := GetTempPath(MAX_PATH, arr);
ShowMessage(arr);           {C:\DOCUME~1\wy\LOCALS~1\Temp\}
ShowMessage(IntToStr(num)); {29}
TempPath := arr;
ShowMessage(TempPath);  //临时文件路径
SetLength(TempFileName, MAX_PATH);
GetTempFileName(PChar(TempPath), 'EXR', 0, PChar(TempFileName));  //获取临时文件名
SetLength(TempFileName, StrLen(PChar(TempFileName)));

ShowMessage(TempFileName);  //临时文件名
end;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: