Jak odczytać ścieżki folderów specjalnych
wotek
Aby odczytać ścieżkę folderów specjalnych w systemie, można skorzystać z poniższego kodu podając odpowiedni parametr:
uses ShlObj;
function GetSpecialFolderPath(const Folder: Integer): string;
var
Path: array[0..MAX_PATH] of Char;
begin
SHGetSpecialFolderPath(0, Path, Folder , False);
Result := Path;
end;
Folder może przyjąć jedną z wartości:
Stała | Opis | Wartość | Wersja [#]_ |
CSIDL_ALTSTARTUP | programy uruchamiane wraz z systemem | 29 | |
CSIDL_APPDATA | Dane aplikacji | 26 | 4.71 |
CSIDL_BITBUCKET | wirtualny folder Kosz | 10 | z rodziny NT |
CSIDL_COMMON_ALTSTARTUP | wspólne programy użytkowników uruchamiane wraz ze startem systemu | 30 | z rodziny NT |
CSIDL_COMMON_DESKTOPDIRECTORY | folder plików widocznych na Pulpicie każdego użytkownika | 25 | z rodziny NT |
CSIDL_COMMON_FAVORITES | wspólne Ulubione wszystkich użytkowników | 31 | z rodziny NT |
CSIDL_COMMON_PROGRAMS | wspólne Programy w Menu Start | 23 | z rodziny NT |
CSIDL_COMMON_STARTMENU | elementy Menu Start dla wszystkich użytkowników | 22 | z rodziny NT |
CSIDL_COMMON_STARTUP | Autostart dla wszystkich użytkowników | 24 | |
CSIDL_CONTROLS | wirtualny folder Panelu sterowania | 3 | |
CSIDL_COOKIES | Cookies stron internetowych | 33 | |
CSIDL_DESKTOP | wirtualny folder pulpitu | 0 | |
CSIDL_DESKTOPDIRECTORY | fizyczny folder Pulpit | 16 | |
CSIDL_DRIVES | wirtualny folder Mój komputer | 17 | |
CSIDL_FAVORITES | ulubione obiekty | 6 | |
CSIDL_FONTS | folder zawierający zainstalowane czcionki | 20 | |
CSIDL_HISTORY | łączniki do ostatnio odwiedzonych stron | 34 | |
CSIDL_INTERNET | wirtualny folder reprezentujący Internet | 1 | |
CSIDL_INTERNET_CACHE | Temporary Internet Files | 32 | 4.72 |
CSIDL_NETHOOD | elementy wyswietlane w Otoczeniu sieciowym | 19 | |
CSIDL_NETWORK | wirtualny folder Otoczenia sieciowego | 18 | |
CSIDL_PERSONAL | Moje dokumenty | 5 | |
CSIDL_PRINTERS | wirtualny folder zainstalowanych drukarek | 4 | |
CSIDL_PRINTHOOD | repozytorium dla łączników do drukarek | 27 | |
CSIDL_PROFILE | folder profilu użytkownika (zwykle jest to C:\Documents and Settings\użytkownik) | 40 | 5.0 |
CSIDL_PROFILES | folder zawierający foldery profili użytkowników | 62 | 6.0 |
CSIDL_PROGRAM_FILES [#]_ | folder programów, zwykle jest to C:\Program Files | 38 | 5.0 |
CSIDL_PROGRAMS | Programy w Menu Start | 2 | |
CSIDL_RECENT | ostatnio używane dokumenty | 8 | |
CSIDL_SENDTO | opcje menu "Wyślij do..." | 9 | |
CSIDL_STARTMENU | Menu Start | 11 | |
CSIDL_STARTUP | Autostart | 7 | |
CSIDL_SYSTEM [#]_ | folder systemowy, zwykle jest to C:\Windows\System32 | 37 | 5.0 |
CSIDL_TEMPLATES | Szablony | 21 | |
CSIDL_WINDOWS [#]_ | folder Windows | 36 | 5.0 |
.. [#] Określenia wersja x.y odnoszą się do wersji powłoki systemu, w której dana stała została wprowadzona. Informacje o tym, jak określić wersję powłoki, można znaleźć tutaj: Shell and Common Controls Versions
.. [#]
.. [#]
.. [#] Stałe niezadeklarowane w module ShelObj.pas.
Jak odczytac ścieżkę do katalogu WINDOWS, SYSTEM32 oraz aktualnego?
const
{$EXTERNALSYM CSIDL_WINDOWS}
CSIDL_WINDOWS=$0023;
{$EXTERNALSYM CSIDL_SYSTEM}
CSIDL_SYSTEM=$0024;
{$EXTERNALSYM CSIDL_CURRENT}
CSIDL_CURRENT=$0025;
function GetDirectory(const Folder: Integer): String;
var
Buffer: array[0..255] of Char;
BufferSize: Cardinal;
begin
BufferSize := 255;
case Folder of
CSIDL_WINDOWS: GetWindowsDirectory(Buffer, BufferSize);
CSIDL_SYSTEM: GetSystemDirectory(Buffer, BufferSize);
CSIDL_CURRENT: GetCurrentDirectory(BufferSize, Buffer);
end;
Result := String(Buffer);
end;
Tylko gdzie ten parametr wpisać ?