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

本例效果图:

代码文件:
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、SHGetPathFromIDList 函数获取常用路径)