shfolder.pp 6.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108
  1. {
  2. This file is part of the Free Pascal run time library.
  3. Copyright (c) 1999-2000 by the Free Pascal development team
  4. Interface to shfolder.dll
  5. See the file COPYING.FPC, included in this distribution,
  6. for details about the copyright.
  7. This program is distributed in the hope that it will be useful,
  8. but WITHOUT ANY WARRANTY; without even the implied warranty of
  9. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  10. **********************************************************************}
  11. { ---------------------------------------------------------------------
  12. shfolder.dll is distributed standard with IE5.5, so it should ship
  13. with 2000/XP or higher but is likely to be installed on NT/95/98 or
  14. ME as well. It works on all these systems.
  15. The info found here is also in the registry:
  16. HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Shell Folders\
  17. HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\User Shell Folders\
  18. Note that not all CSIDL_* constants are supported by shlfolder.dll,
  19. they should be supported by the shell32.dll, though again not on all
  20. systems.
  21. ---------------------------------------------------------------------}
  22. Unit shfolder;
  23. Interface
  24. Uses
  25. windows;
  26. Const
  27. LibName = 'SHFolder.dll';
  28. Const
  29. CSIDL_PROGRAMS = $0002; { %SYSTEMDRIVE%\Program Files }
  30. CSIDL_PERSONAL = $0005; { %USERPROFILE%\My Documents }
  31. CSIDL_FAVORITES = $0006; { %USERPROFILE%\Favorites }
  32. CSIDL_STARTUP = $0007; { %USERPROFILE%\Start menu\Programs\Startup }
  33. CSIDL_RECENT = $0008; { %USERPROFILE%\Recent }
  34. CSIDL_SENDTO = $0009; { %USERPROFILE%\Sendto }
  35. CSIDL_STARTMENU = $000B; { %USERPROFILE%\Start menu }
  36. CSIDL_MYMUSIC = $000D; { %USERPROFILE%\Documents\My Music }
  37. CSIDL_MYVIDEO = $000E; { %USERPROFILE%\Documents\My Videos }
  38. CSIDL_DESKTOPDIRECTORY = $0010; { %USERPROFILE%\Desktop }
  39. CSIDL_NETHOOD = $0013; { %USERPROFILE%\NetHood }
  40. CSIDL_TEMPLATES = $0015; { %USERPROFILE%\Templates }
  41. CSIDL_COMMON_STARTMENU = $0016; { %PROFILEPATH%\All users\Start menu }
  42. CSIDL_COMMON_PROGRAMS = $0017; { %PROFILEPATH%\All users\Start menu\Programs }
  43. CSIDL_COMMON_STARTUP = $0018; { %PROFILEPATH%\All users\Start menu\Programs\Startup }
  44. CSIDL_COMMON_DESKTOPDIRECTORY = $0019; { %PROFILEPATH%\All users\Desktop }
  45. CSIDL_APPDATA = $001A; { %USERPROFILE%\Application Data (roaming) }
  46. CSIDL_PRINTHOOD = $001B; { %USERPROFILE%\Printhood }
  47. CSIDL_LOCAL_APPDATA = $001C; { %USERPROFILE%\Local Settings\Application Data (non roaming) }
  48. CSIDL_COMMON_FAVORITES = $001F; { %PROFILEPATH%\All users\Favorites }
  49. CSIDL_INTERNET_CACHE = $0020; { %USERPROFILE%\Local Settings\Temporary Internet Files }
  50. CSIDL_COOKIES = $0021; { %USERPROFILE%\Cookies }
  51. CSIDL_HISTORY = $0022; { %USERPROFILE%\Local settings\History }
  52. CSIDL_COMMON_APPDATA = $0023; { %PROFILESPATH%\All Users\Application Data }
  53. CSIDL_WINDOWS = $0024; { %SYSTEMROOT% }
  54. CSIDL_SYSTEM = $0025; { %SYSTEMROOT%\SYSTEM32 (may be system on 95/98/ME) }
  55. CSIDL_PROGRAM_FILES = $0026; { %SYSTEMDRIVE%\Program Files }
  56. CSIDL_MYPICTURES = $0027; { %USERPROFILE%\My Documents\My Pictures }
  57. CSIDL_PROFILE = $0028; { %USERPROFILE% }
  58. CSIDL_PROGRAM_FILES_COMMON = $002B; { %SYSTEMDRIVE%\Program Files\Common }
  59. CSIDL_COMMON_TEMPLATES = $002D; { %PROFILEPATH%\All Users\Templates }
  60. CSIDL_COMMON_DOCUMENTS = $002E; { %PROFILEPATH%\All Users\Documents }
  61. CSIDL_COMMON_ADMINTOOLS = $002F; { %PROFILEPATH%\All Users\Start Menu\Programs\Administrative Tools }
  62. CSIDL_ADMINTOOLS = $0030; { %USERPROFILE%\Start Menu\Programs\Administrative Tools }
  63. CSIDL_COMMON_MUSIC = $0035; { %PROFILEPATH%\All Users\Documents\my music }
  64. CSIDL_COMMON_PICTURES = $0036; { %PROFILEPATH%\All Users\Documents\my pictures }
  65. CSIDL_COMMON_VIDEO = $0037; { %PROFILEPATH%\All Users\Documents\my videos }
  66. CSIDL_CDBURN_AREA = $003B; { %USERPROFILE%\Local Settings\Application Data\Microsoft\CD Burning }
  67. CSIDL_PROFILES = $003E; { %PROFILEPATH% }
  68. CSIDL_FLAG_CREATE = $8000; { (force creation of requested folder if it doesn't exist yet) }
  69. { Original entry points }
  70. Function SHGetFolderPathA(Ahwnd: HWND; Csidl: longint; Token: THandle; Flags: DWord; Path: PAnsiChar): HRESULT; stdcall; external LibName name 'SHGetFolderPathA';
  71. Function SHGetFolderPathW(Ahwnd: HWND; Csidl: longint; Token: THandle; Flags: DWord; Path: PWideChar): HRESULT; stdcall; external LibName name 'SHGetFolderPathW';
  72. Function SHGetFolderPath (Ahwnd: HWND; Csidl: longint; Token: THandle; Flags: DWord; Path: PAnsiChar): HRESULT; stdcall; external LibName name 'SHGetFolderPathA';
  73. { For Delphi compatibility }
  74. type
  75. PFNSHGetFolderPathA = Function(Ahwnd: HWND; Csidl: longint; Token: THandle; Flags: DWord; Path: PAnsiChar): HRESULT; stdcall;
  76. PFNSHGetFolderPathW = Function(Ahwnd: HWND; Csidl: longint; Token: THandle; Flags: DWord; Path: PWideChar): HRESULT; stdcall;
  77. PFNSHGetFolderPath = PFNSHGetFolderPathA;
  78. TSHGetFolderPathA = PFNSHGetFolderPathA;
  79. TSHGetFolderPathW = PFNSHGetFolderPathW;
  80. TSHGetFolderPath = TSHGetFolderPathA;
  81. implementation
  82. const
  83. SHFolderDll = 'SHFolder.dll';
  84. end.