西西软件园多重安全检测下载网站、值得信赖的软件下载站!
软件
软件
文章
搜索

首页编程开发Delphi → 在delphi 获取特殊目录 SHGetSpecialFolderLocation SHGetPathFromIDList

在delphi 获取特殊目录 SHGetSpecialFolderLocation SHGetPathFromIDList

前往专题相关软件相关文章发表评论 来源:本站整理时间:2015/7/21 10:31:21字体大小:A-A+

作者:不详点击:879次评论:0次标签: delphi

新浪体育app客户端3.10.0.0 官网安卓版
  • 类型:新闻资讯大小:33.8M语言:中文 评分:10.0
  • 标签:
立即下载

在写应用程序的时候,我们经常会用到读取windows系统的一些特殊的目录。比如 桌面 快速启动栏的路径等等。

下面介绍两个API函数 SHGetSpecialFolderLocation SHGetPathFromIDList

我们先看代码:

通过 SHGetSpecialFolderLocation、SHGetPathFromIDList 函数获取常用路径

这个是在windows下显示的结果


这是在 win7下面显示的结果

0:C:\Users\Administrator\Desktop

1:

2:C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Start Menu\Programs

3:

4:

5:C:\Users\Administrator\Documents

6:C:\Users\Administrator\Favorites

7:C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup

8:C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Recent

9:C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\SendTo

10:

11:C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Start Menu

12:

13:C:\Users\Administrator\Music

14:C:\Users\Administrator\Videos

15:

16:C:\Users\Administrator\Desktop

17:

18:

19:C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Network Shortcuts

20:C:\Windows\Fonts

21:C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Templates

22:C:\ProgramData\Microsoft\Windows\Start Menu

23:C:\ProgramData\Microsoft\Windows\Start Menu\Programs

24:C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup

25:C:\Users\Public\Desktop

26:C:\Users\Administrator\AppData\Roaming

27:C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Printer Shortcuts

28:C:\Users\Administrator\AppData\Local

29:C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup

30:C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup

31:C:\Users\Administrator\Favorites

32:C:\Users\Administrator\AppData\Local\Microsoft\Windows\Temporary Internet Files

33:C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Cookies

34:C:\Users\Administrator\AppData\Local\Microsoft\Windows\History

35:C:\ProgramData

36:C:\Windows

37:C:\Windows\System32

38:C:\Program Files (x86)

39:C:\Users\Administrator\Pictures

40:C:\Users\Administrator

41:C:\Windows\SysWOW64

42:C:\Program Files (x86)

43:C:\Program Files (x86)\Common Files

44:C:\Program Files (x86)\Common Files

45:C:\ProgramData\Microsoft\Windows\Templates

46:C:\Users\Public\Documents

47:C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Administrative Tools

48:C:\Users\Administrator\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Administrative Tools

49:

50:

51:

52:

53:C:\Users\Public\Music

54:C:\Users\Public\Pictures

55:C:\Users\Public\Videos

56:C:\Windows\Resources

57:

58:

59:C:\Users\Administrator\AppData\Local\Microsoft\Windows\Burn\Burn


文字结果 可以用 Ctrl+F 来查找


代码文件:unit Unit1;

interface
uses
 Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
 Dialogs, StdCtrls;
type
 TForm1 = class(TForm)
  Memo1: TMemo;
  procedure FormCreate(Sender: TObject);
 end;
var
 Form1: TForm1;
implementation
{$R *.dfm}
uses ShlObj; {SHGetSpecialFolderLocation、SHGetPathFromIDList 函数来自这个单元}
{获取常用路径(的)函数}
function GetPath(FID: Integer): string;
var
 pidl: PItemIDList;
 path: array[0..MAX_PATH] of Char;
begin
 SHGetSpecialFolderLocation(0, FID, pidl);
 SHGetPathFromIDList(pidl, path);
 Result := path;
end;
{测试时, 我把 SHGetSpecialFolderLocation 函数需要(的)参数定义成了一个常数数组}
const
 arr: array[0..57] of Integer = (
  CSIDL_DESKTOP         , { = $0000 }
  CSIDL_INTERNET        , { = $0001 }
  CSIDL_PROGRAMS        , { = $0002 }
  CSIDL_CONTROLS        , { = $0003 }
  CSIDL_PRINTERS        , { = $0004 }
  CSIDL_PERSONAL        , { = $0005 }
  CSIDL_FAVORITES        , { = $0006 }
  CSIDL_STARTUP         , { = $0007 }
  CSIDL_RECENT         , { = $0008 }
  CSIDL_SENDTO         , { = $0009 }
  CSIDL_BITBUCKET        , { = $000a }
  CSIDL_STARTMENU        , { = $000b }
  CSIDL_MYDOCUMENTS       , { = $000c }
  CSIDL_MYMUSIC         , { = $000d }
  CSIDL_MYVIDEO         , { = $000e }
  CSIDL_DESKTOPDIRECTORY    , { = $0010 }
  CSIDL_DRIVES         , { = $0011 }
  CSIDL_NETWORK         , { = $0012 }
  CSIDL_NETHOOD         , { = $0013 }
  CSIDL_FONTS          , { = $0014 }
  CSIDL_TEMPLATES        , { = $0015 }
  CSIDL_COMMON_STARTMENU    , { = $0016 }
  CSIDL_COMMON_PROGRAMS     , { = $0017 }
  CSIDL_COMMON_STARTUP     , { = $0018 }
  CSIDL_COMMON_DESKTOPDIRECTORY , { = $0019 }
  CSIDL_APPDATA         , { = $001a }
  CSIDL_PRINTHOOD        , { = $001b }
  CSIDL_LOCAL_APPDATA      , { = $001c }
  CSIDL_ALTSTARTUP       , { = $001d }
  CSIDL_COMMON_ALTSTARTUP    , { = $001e }
  CSIDL_COMMON_FAVORITES    , { = $001f }
  CSIDL_INTERNET_CACHE     , { = $0020 }
  CSIDL_COOKIES         , { = $0021 }
  CSIDL_HISTORY         , { = $0022 }
  CSIDL_COMMON_APPDATA     , { = $0023 }
  CSIDL_WINDOWS         , { = $0024 }
  CSIDL_SYSTEM         , { = $0025 }
  CSIDL_PROGRAM_FILES      , { = $0026 }
  CSIDL_MYPICTURES       , { = $0027 }
  CSIDL_PROFILE         , { = $0028 }
  CSIDL_SYSTEMX86        , { = $0029 }
  CSIDL_PROGRAM_FILESX86    , { = $002a }
  CSIDL_PROGRAM_FILES_COMMON  , { = $002b }
  CSIDL_PROGRAM_FILES_COMMONX86 , { = $002c }
  CSIDL_COMMON_TEMPLATES    , { = $002d }
  CSIDL_COMMON_DOCUMENTS    , { = $002e }
  CSIDL_COMMON_ADMINTOOLS    , { = $002f }
  CSIDL_ADMINTOOLS       , { = $0030 }
  CSIDL_CONNECTIONS       , { = $0031 }
  CSIDL_COMMON_MUSIC      , { = $0035 }
  CSIDL_COMMON_PICTURES     , { = $0036 }
  CSIDL_COMMON_VIDEO      , { = $0037 }
  CSIDL_RESOURCES        , { = $0038 }
  CSIDL_RESOURCES_LOCALIZED   , { = $0039 }
  CSIDL_COMMON_OEM_LINKS    , { = $003a }
  CSIDL_CDBURN_AREA       , { = $003b }
  CSIDL_COMPUTERSNEARME     , { = $003d }
  CSIDL_PROFILES         { = $003e }
 );
{测试}
procedure TForm1.FormCreate(Sender: TObject);
var
 i: Integer;
 s: string;
begin
 Memo1.Clear;
 for i := 0 to Length(Arr) - 1 do
 begin
  s := GetPath(Arr[i]);
  if s<>'' then Memo1.Lines.Add(Format('%d:'#9'%s', [Arr[i], s]));
 end;
end;
end.
窗体文件:object Form1: TForm1
 Left = 0
 Top = 0
 Caption = 'Form1'
 ClientHeight = 318
 ClientWidth = 465
 Color = clBtnFace
 Font.Charset = DEFAULT_CHARSET
 Font.Color = clWindowText
 Font.Height = -11
 Font.Name = 'Tahoma'
 Font.Style = []
 OldCreateOrder = False
 OnCreate = FormCreate
 PixelsPerInch = 96
 TextHeight = 13
 object Memo1: TMemo
  Left = 0
  Top = 0
  Width = 465
  Height = 318
  Align = alClient
  Lines.Strings = (
   'Memo1')
  ScrollBars = ssBoth
  TabOrder = 0
  ExplicitWidth = 409
 end
end

 

看一个本站编写的函数

//获取系统特殊文件夹路径(SHGetSpecialFolderLocation)
procedure getFolder(aLocation: integer;var path:string);//path为输出参数
 var
  pIdl: PItemIDList;
  hPath: PChar;
begin
   if SUCCEEDED(SHGetSpecialFolderLocation(0, aLocation, pidl)) then
  begin
   hPath := StrAlloc(max_path) ;
   SHGetPathFromIDList(pIdl, hPath) ;
   path:=strpas(hpath);
   StrDispose(hPath) ;
  end;
 end;

调用的时候就只需要

var

path:string;

 getFolder(16,path); 这样就可以了



    足球社区
    (10)足球社区
    足球社区系列由西西为大家整理而来,当前都市工作者亚健康问题严重,如果能引动大家的兴趣而进行体育活动是一个十分不错的选择,无论是足球篮球,只要有你喜爱的运动项目,都可在平台上找寻同城的兴趣爱好者,一起找寻场地进行体育运动,丰富我们生活的同时也保障了我们的身体健康。功能简介社交模块踢球找球场找球队找球员组织踢球活动,为业余球员提供全面的踢球信息,搭建业余球队球员注册体系。看球为国内球迷提供门票信息服务...更多>>
    篮球资讯app
    (216)篮球资讯app
    篮球运动是大多数男生都很喜爱的运动之一,它以其对抗性可观赏性等特点使得越来越多的人爱上了这项体育运动。有的人不打球,但对各项篮球赛事很感兴趣,经常关注各类比赛。小编在搜集整理了一些篮球资讯类的应用,文字直播比赛视频球员动态等内容一应俱全。各位球迷朋友们不要错过了,快来看看吧。...更多>>
    体育新闻
    (58)体育新闻
    体育新闻应用汇聚全网各大体育新闻平台软件,为用户带来最全面的体育赛事资讯,无论是篮球足球羽毛球乒乓球,体育新闻一手掌握,为用户带来最新的热点动态,让你为自己喜爱的球队,喜欢的球员而呐喊喝彩,打开手机,就能畅享体育激情。最新资讯库里勇士首节打爆湖人开局连胜创历史北京时间今天上午,常规赛继续进行。在一场受人瞩目的较量中,勇士主场大胜湖人,取得开局连胜刷新历史记录。勇士核心控卫库里拿到分助攻,德雷蒙德格...更多>>
    lols5直播
    (16)lols5直播
    直播软件西西下载专区为您提供英雄联盟比赛直播软件下载大全,包含电脑直播软件和手机直播,并且还有众多比赛视频哦直播简介已经开打了一段时间,尽管中国队的表现不尽人意,但是还是有众多的玩家对比赛报以期待。英雄联盟系列总决赛是比赛里面最高荣誉,各个强队将齐聚在这伟大的殿堂,决出世界上最强的队伍。西西本页为您提供直播软件下载,为您提供比赛视频打包下载。直播软件有哪些直播地址主要是官网的腾讯视频语音以及龙珠斗...更多>>
    电视盒子软件
    (35)电视盒子软件
    电视盒子是一个连接电视机与互联网的设备。电视机通过网络电视盒连接互联网,收看网络电视节目。乐宝智能电视盒为代表的主流品牌,为其搭载了目前市场上应用最广的安卓系统,让传统的电视机升级为智能化网络化。让电视机实现和智能手机平板电脑一样的功能,让电视机由用户自行安装和卸载软件游戏等应用程序,实现无限的内容无限的应用。电视盒子哪个好虽然各大电视厂商都发布了一些电视盒子软件,但是西西觉得目前来说还是华为密盒...更多>>
    • 乐视影视 letvv6.0.1 VIP去广告特别

      12-05 / 31.3M

      推荐理由:乐视影视Android客户端是由乐视网倾情打造的一款精品视频应用,包括视频的在线播放、收藏记录、播放记录、多
    • 小米盒子遥控器v4.1 安卓手机版

      02-08 / 2.7M

      推荐理由:小米盒子遥控器:一款可以将你的Android手机变成小米盒子遥控器的控制应用,软件功能十分强大,让你抛开传统
    • APUS消息提醒v1.4.0 安卓版

      05-25 / 513KB

      推荐理由:APUS消息提醒是APUS桌面的一个插件,它能帮助您及时注意到未接来电和未读短信。当存在消息提醒时,电话或短
    • 电视qq2.0安卓版

      03-20 / 6.3M

      推荐理由:腾讯电视qq手机版,装逼必备的一个QQ聊天软件,因为现在还是测试版本,小编在安装登入的时候出现了错误,如
    • 快乐TV云点播v5.0 绿色版

      10-23 / 1.5M

      推荐理由:快乐TV云点播是一款在种子搜索及播放工具,提供了海量影片库资源,同时还自带了种子搜索器功能,多个通道,
    • TV客v1.0.1 安卓版

      08-21 / 14.0M

      推荐理由:TV客是由北京闪联云视信息技术有限公司推出的一款基于话题兴趣的电视社交应用,脱离传统电视单调的观看模式

    相关评论

    阅读本文后您有什么感想? 已有人给出评价!

    • 8 喜欢喜欢
    • 3 顶
    • 1 难过难过
    • 5 囧
    • 3 围观围观
    • 2 无聊无聊

    热门评论

    最新评论

    发表评论 查看所有评论(0)

    昵称:
    表情: 高兴 可 汗 我不要 害羞 好 下下下 送花 屎 亲亲
    字数: 0/500 (您的评论需要经过审核才能显示)