Programowanie w języku Delphi » FAQ

Jak odczytać ścieżki folderów specjalnych

  • 2007-10-24 13:20
  • 1 komentarz
  • 2664 odsłony
  • Oceń ten tekst jako pierwszy
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łaOpisWartośćWersja 1
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 2 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 3 folder systemowy, zwykle jest to C:\Windows\System32 37 5.0
CSIDL_TEMPLATES Szablony 21
CSIDL_WINDOWS 4 folder Windows 36 5.0


[1] 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

[2]
[3]
[4] Stałe niezadeklarowane w module ShelObj.pas.

Źródło


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;

Źródło

1 komentarz

chkam 2012-10-22 22:43

Tylko gdzie ten parametr wpisać ?