Delphi获取系统特殊路径

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;




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
目 录 前言 第一部分 Delphi编程基础 第1章 Delphi集成开发环境 1 1.1 集成开发环境简介 1 1.2 集成调试器 5 1.3 开发环境的优化 6 1.3.1 自定义工具栏 6 1.3.2 编程环境设置 7 1.3.3 编辑环境设置 8 1.3.4 工程设置 8 1.4 方法与技巧 9 1.4.1 使用代码浏览器 9 1.4.2 使用代码编辑器 9 1.4.3 使用帮助系统 10 1.4.4 设置IDE桌面 11 第2章 对象Pascal语言 12 2.1 学习对象Pascal语言的一个通用 例程 12 2.2 对象Pascal语言基础 14 2.2.1 标识符 14 2.2.2 保留字和指令字 14 2.2.3 注释 15 2.2.4 数据类型 16 2.2.5 运算符 21 2.2.6 语句 24 2.2.7 过程与函数 27 2.3 对象Pascal语言的关键技术 30 2.3.1 对象和类 31 2.3.2 类的封装与继承 31 2.3.3 构造函数和析构函数 32 2.3.4 多态性 35 2.3.5 抽象类 38 2.3.6 运行时类型信息 39 2.3.7 类方法 41 2.3.8 类引用 42 2.3.9 单元文件与工程文件 43 2.4 异常处理 45 2.4.1 raise语句 45 2.4.2 try...except语句 45 2.4.3 try...finally语句 47 2.5 方法与技巧 48 2.5.1 命名规则 48 2.5.2 在编译时自由设置是否获得提示 信息 48 2.5.3 使用代码模板 49 2.5.4 使用动态多维数组 49 2.5.5 定义两个相互包含的类 50 2.5.6 获取和使用命令行参数 51 2.5.7 引用参数传递 51 第二部分 Delphi编程的核心技能 第3章 窗体和组件 53 3.1 窗体和组件 53 3.1.1 窗体 54 3.1.2 组件 56 3.1.3 在窗体中使用组件 57 3.2 文本组件 60 3.3 特殊输入组件 61 3.4 按钮及其分类组件 63 3.5 列表组件 64 3.6 分组组件 67 3.7 信息反馈组件 69 3.8 表格显示组件 70 3.9 图形显示组件 71 3.10 开发MDI应用程序 73 3.11 常用组件的用法 74 3.12 方法与技巧 84 3.12.1 窗体、组件的使用原则 84 3.12.2 使用信息对话框 85 3.12.3 使用组件的Hint属性 88 3.12.4 使用Edit组件的IME属性 89 3.12.5 将系统字体添加到ComboBox 组件中 89 3.12.6 在RichEdit组件中存取文件 90 3.12.7 设置模态对话框的返回值 90 3.12.8 使用事件处理过程中的Sender 参数 91 3.12.9 为控件生成多行提示信息 91 3.12.10 生成非矩形窗口 92 3.12.11 移动无标题栏窗口 94 3.12.12 制作动态字幕 95 3.12.13 在窗体上动态地设置背景 画面 96 3.12.14 Owner和Parent的区别 97 第4章 菜单、工具栏和状态栏 98 4.1 菜单 98 4.1.1 主菜单 99 4.1.2 鼠标右键弹出式菜单 99 4.1.3 使用菜单模板 99 4.2 工具栏 100 4.2.1 ToolBar 100 4.2.2 CoolBar 100 4.2.3 ControlBar 101 4.3 状态栏 101 4.4 方法与技巧 106 4.4.1 动态创建菜单 106 4.4.2 为菜单动态定义快捷键 108 4.4.3 动态改变菜单 108 4.4.4 定制系统菜单 109 4.4.5 制作图形菜单项 110 4.4.6 在状态栏中添加进度条等其他 组件 111 4.4.7 MDI应用程序中的菜单融合 113 4.4.8 制作可随处拖放的工具栏 116 4.4.9 将菜单项移到菜单栏的最右边 117 4.4.10 运行时控件的移动 117 第5章 键盘和鼠标 119 5.1 键盘事件 119 5.2 鼠标事件 120 5.2.1 常用鼠标事件 120 5.2.2 拖曳事件 120 5.3

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值