Einzelnen Beitrag anzeigen

Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#2

AW: StringToKnownFolder gesucht

  Alt 1. Aug 2012, 05:35
Delphi-Quellcode:
uses ActiveX, ShlObj;

function GetSpecialFolder(hWindow: HWND; Folder: Integer): String;
var
  pMalloc: IMalloc;
  pidl: PItemIDList;
  Path: PChar;
begin
// Parameter für Folder:
//Const CSIDL_FLAG_CREATE = &H8000   '(Win 2000) Falls das Verzeichnis nicht Eistiert wird es erstellt
//Const CSIDL_FLAG_DONT_VERIFY = &H4000   '(Win 2000) Benutzt den Ordner auch wenn der CSIDL nicht existiert
//Const CSIDL_ADMINTOOLS = &H30   '(Win 2000) Ermittelt das Verzeichnis "Administrations Tools"
//Const CSIDL_ALTSTARTUP = &H1D   'Ermittelt das Verzeichnis "Alternatives Startverzeichnis"
//Const CSIDL_APPDATA = &H1A   'Ermittelt das Verzeichnis "AppData"
//Const CSIDL_BITBUCKET = &HA   'Ermittelt das Verzeichnis "Papierkorb"
//Const CSIDL_COMMON_ADMINTOOLS = &H2F   '(Win 2000) Ermittelt das Verzeichnis "Administartions Tools für alle Benutzer"
//Const CSIDL_COMMON_ALTSTARTUP = &H1D   '(Win 2000) Ermittelt das Verzeichnis "Alternatives Startverzeichnis für alle Benutzer"
//Const CSIDL_COMMON_APPDATA = &H23   '(Win NT/2000) Ermittelt das Verzeichnis "AppData für alle Benutzer"
//Const CSIDL_COMMON_DESKTOPDIRECTORY = &H19   '(Win NT/2000) Ermittelt das Verzeichnis "Desktop für alle Benutzer"
//Const CSIDL_COMMON_DOCUMENTS = &H2E   '(Win NT/2000) Ermittelt das Verzeichnis "Dokumente für alle Benutzer"
//Const CSIDL_COMMON_FAVORITES = &H1F   '(Win NT/2000) Ermittelt das Verzeichnis "Favoriten für alle Benutzer"
//Const CSIDL_COMMON_PROGRAMS = &H17   '(Win NT/2000) Ermittelt das Verzeichnis "Startmenü/Programme für alle Benutzer"
//Const CSIDL_COMMON_STARTMENU = &H16   '(Win NT/2000) Ermittelt das Verzeichnis "Startmenü für alle Benutzer"
//Const CSIDL_COMMON_STARTUP = &H18   '(Win NT/2000) Ermittelt das Verzeichnis "Startmenü/Autostart für alle Benutzer"
//Const CSIDL_COMMON_TEMPLATES = &H2D   '(Win NT/2000) Ermittelt das Verzeichnis "Templates für alle Benutzer"
//Const CSIDL_CONTROLS = &H3   'Ermittelt das Verzeichnis "Systemsteuerung"
//Const CSIDL_COOKIES = &H21   'Ermittelt das Verzeichnis "Cookies"
//Const CSIDL_DESKTOP = &H0   'Ermittelt das Verzeichnis "Desktop"
//Const CSIDL_DESKTOPDIRECTORY = &H10   'Ermittelt das Verzeichnis "Desktop-Verzeichnis"
//Const CSIDL_DRIVES = &H11   'Ermittelt das Verzeichnis "Arbeitsplatz"
//Const CSIDL_FAVORITES = &H6   'Ermittelt das Verzeichnis "Favoriten"
//Const CSIDL_FONTS = &H14   'Ermittelt das Verzeichnis "Fonts"
//Const CSIDL_HISTORY = &H22   'Ermittelt das Verzeichnis "History"
//Const CSIDL_INTERNET = &H1   'Ermittelt das Verzeichnis "Internet"
//Const CSIDL_INTERNET_CACHE = &H20   'Ermittelt das Verzeichnis "Internet Cache"
//Const CSIDL_LOCAL_APPDATA = &H1C   '(nur IE ab Version 5.0) Ermittelt das Verzeichnis "Local AppData"
//Const CSIDL_MYPICTURES = &H27   '(nur IE ab Version 5.0) Ermittelt das Verzeichnis "Eigene Bilder"
//Const CSIDL_NETHOOD = &H13   'Ermittelt das Verzeichnis "Netzwerkumgebung"
//Const CSIDL_NETWORK = &H12   'Ermittelt das Verzeichnis "Gesamtes Netzwerk"
//Const CSIDL_PERSONAL = &H5   'Ermittelt das Verzeichnis "Eigene Dokumente"
//Const CSIDL_PRINTERS = &H4   'Ermittelt das Verzeichnis "Drucker"
//Const CSIDL_PRINTHOOD = &H1B   'Ermittelt das Verzeichnis "Drucker-Verzeichnis"
//Const CSIDL_PROFILE = &H28   '(nur IE ab Version 5.0) Ermittelt das Verzeichnis "Profile"
//Const CSIDL_PROGRAM_FILES = &H26   '(nur IE ab Version 5.0) Ermittelt das Verzeichnis "Programme"
//Const CSIDL_PROGRAM_FILES_COMMON = &H2B   '(Win NT/2000) Ermittelt das Verzeichnis "Programme für alle Benutzer"
//Const CSIDL_PROGRAM_FILES_COMMONX86 = &H2C   '(Win 2000 - x86) Ermittelt das Verzeichnis "Programme für alle Benutzer"
//Const CSIDL_PROGRAM_FILESX86 = &H2A   '(Win 2000 - RISC) Ermittelt das Verzeichnis "Programme für alle Benutzer"
//Const CSIDL_PROGRAMS = &H2   'Ermittelt das Verzeichnis "Startmenü/Programme"
//Const CSIDL_RECENT = &H8   'Ermittelt das Verzeichnis "Startmenü/Dokumente"
//Const CSIDL_SENDTO = &H9   'Ermittelt das Verzeichnis "Senden zu"
//Const CSIDL_STARTMENU = &HB   'Ermittelt das Verzeichnis "Startmenü"
//Const CSIDL_STARTUP = &H7   'Ermittelt das Verzeichnis "Autostart"
//Const CSIDL_SYSTEM = &H25   '(nur IE ab Version 5.0) Ermittelt das Verzeichnis "System"
//Const CSIDL_SYSTEMX86 = &H29   '(Win 2000) Ermittelt das Verzeichnis "Systemx86"
//Const CSIDL_TEMPLATES = &H15   'Ermittelt das Verzeichnis "Templates"

  if (SHGetMalloc(pMalloc) <> S_OK) then
  begin
    MessageBox(hWindow, 'Couldn''t get pointer to IMalloc interface.',
               'SHGetMalloc(pMalloc)', 16);
    Exit;
  end;

  SHGetSpecialFolderLocation(hWindow, Folder, pidl);
  GetMem(Path, MAX_PATH);
  SHGetPathFromIDList(pidl, Path);
  Result := Path;
  FreeMem(Path);

  pMalloc.Free(pidl);
end;
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat