Using
ShlObj
unit and SHGetSpecialFolderLocation
Windows
API function, we can retrieve the location of a special folders, such
as My computer, Desktop, Program Files etc… There are over 20 special
folder locations.
To get more info about SHGetSpecialFolderLocation, visit MSDN pages.
As you can see below, the source code is very simple. The most
important thing is CSIDL value, that identifies the folder of interest.
Here is a small list of these values (names are self-explaining):
CSIDL_DESKTOP
CSIDL_INTERNET
CSIDL_PROGRAMS
CSIDL_CONTROLS
CSIDL_PRINTERS
CSIDL_PERSONAL
CSIDL_FAVORITES
CSIDL_STARTUP
CSIDL_RECENT
CSIDL_SENDTO
CSIDL_BITBUCKET
CSIDL_STARTMENU
CSIDL_DESKTOPDIRECTORY
CSIDL_DRIVES
CSIDL_NETWORK
CSIDL_NETHOOD
CSIDL_FONTS
CSIDL_TEMPLATES
CSIDL_COMMON_STARTMENU
CSIDL_COMMON_PROGRAMS
CSIDL_COMMON_STARTUP
CSIDL_COMMON_DESKTOPDIRECTORY
CSIDL_APPDATA
CSIDL_PRINTHOOD
CSIDL_ALTSTARTUP
CSIDL_COMMON_ALTSTARTUP
CSIDL_COMMON_FAVORITES
CSIDL_INTERNET_CACHE
CSIDL_COOKIES
CSIDL_HISTORY
The code below shows how to retrieve History folder.
unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, ShlObj; type TForm1 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var pidl: PItemIDList; path: array[0..MAX_PATH] of char; begin SHGetSpecialFolderLocation(Handle, CSIDL_HISTORY, pidl); SHGetPathFromIDList(pidl, path); ShowMessage(path); end; end.
Δεν υπάρχουν σχόλια:
Δημοσίευση σχολίου