C++ Builder Snippets  

Namen der Systemverzeichnisse ermitteln:
 
Namen des \Windows\ und des Windows\System\ -Verzeichnisse lassen sich mit Hilfe der API-Funktionen GetWindowsDirectory() und GetSystemDirectory() bestimmen. Name des Verzeichnisses für temporäre Dateien kann aus der Umgebungsvariablen "TEMP" mit Hilfe von GetEnvironmentVariable() ausgelesen werden:
void __fastcall TForm1::Button1Click(TObject *Sender)
{
  char cBuf[MAX_PATH];

  // Namen der Windows-Verzeichnisses ermitteln:
  GetWindowsDirectory(cBuf, sizeof(cBuf));
  ShowMessage("Windows-Verzeichnis: " + AnsiString(cBuf));

  // Namen der Systemverzeichnisses ermitteln:
  GetSystemDirectory(cBuf, sizeof(cBuf));
  ShowMessage("Windows System-Verzeichnis: " + AnsiString(cBuf));

  // Namen des Verzeichnisses für temporäre Dateien ermitteln:
  GetEnvironmentVariable(TEXT("TEMP"), cBuf, sizeof(cBuf));
  ShowMessage("Verzeichnis für temporäre Dateien: " + AnsiString(cBuf));
}
Mit Hilfe der API-Funktion SHGetSpecialFolderLocation() können Namen einiger weiteren Windows-Systemverzeichnisse ermittelt werden:
//---------------------------------------------------------------------------
// Funktion GetSystemPath(int ilFolder) liefert den Namen des
// Systemverzeichnisses für die übergebene Folder-Id.
//---------------------------------------------------------------------------
// Die Folder-Id Zugriffskonstanten sind in der Datei
// ..\cbuilder\include\shlobj.h definiert.
//---------------------------------------------------------------------------
// evtl. müssen an Anfang der Source-Datei folgende
// Anweisungen hizugefügt werden:
//
// #define NO_WIN32_LEAN_AND_MEAN
// #include <shlobj.hpp>
//---------------------------------------------------------------------------
AnsiString GetSystemPath(int ilFolder)
{
  char cBuf[MAX_PATH];
  LPITEMIDLIST pidl;
  SHGetSpecialFolderLocation(0, ilFolder, &pidl);
  SHGetPathFromIDList(pidl, cBuf);
  return AnsiString(cBuf);
}


//---------------------------------------------------------------------------
// Beispielaufrufe
//---------------------------------------------------------------------------
// Hinweis: nicht alle Windows-Versionen unterstützen alle hier aufgeführten
// Konstanten. Folgende Aufrufe wurden unter Windows 2000 getestet:
//---------------------------------------------------------------------------

// Verzeichnis für Anwendungsdaten:
GetSystemPath(CSIDL_APPDATA);

// Desktop-Verzeichnis für alle Benutzer:
GetSystemPath(CSIDL_COMMON_DESKTOPDIRECTORY);

// Favoriten-Verzeichnis für alle Benutzer:
GetSystemPath(CSIDL_COMMON_FAVORITES);

// Startmenü->Programme für alle Benutzer:
GetSystemPath(CSIDL_COMMON_PROGRAMS);

// Startmenü-Verzeichnis für alle Benutzer:
GetSystemPath(CSIDL_COMMON_STARTMENU);

// Startmenü->Autostart für alle Benutzer:
GetSystemPath(CSIDL_COMMON_STARTUP);

// Cookies-Verzeichnis:
GetSystemPath(CSIDL_COOKIES);

// Desktop-Verzeichnis:
GetSystemPath(CSIDL_DESKTOPDIRECTORY);

// Favoriten-Verzeichnis des Benutzers:
GetSystemPath(CSIDL_FAVORITES);

// Schriftarten-Verzeichnis:
GetSystemPath(CSIDL_FONTS);

// Internet-Verlauf:
GetSystemPath(CSIDL_HISTORY);

// Internet Cache-Verzeichnis:
GetSystemPath(CSIDL_INTERNET_CACHE);

// Netzwerkumgebung-Verzeichnis:
GetSystemPath(CSIDL_NETHOOD);

// Eigene Dateien:
GetSystemPath(CSIDL_PERSONAL);

// Druckumgebung:
GetSystemPath(CSIDL_PRINTHOOD);

// Startmenü->Programme des Benutzers:
GetSystemPath(CSIDL_PROGRAMS);

// Startmenü->Dokumente des Benutzers:
GetSystemPath(CSIDL_RECENT);

// "Senden an"-Verzeichnis des Benutzers:
GetSystemPath(CSIDL_SENDTO);

// Startmenü-Verzeichnis des Benutzers:
GetSystemPath(CSIDL_STARTMENU);

// "Startmenü->Autostart" des Benutzers:
GetSystemPath(CSIDL_STARTUP);

// Vorlagen-Verzeichnis des Benutzers:
GetSystemPath(CSIDL_TEMPLATES));


© '99-2000 by S. Kreutzmann