Position des Desktop-Ordners?

Ich suche eine Funktion mit der man den Pfad des Desktops
herausfinden kann.
Ich hab zwar bei der WinApi so etwas in der Art gefunden
(shgetdesktopfolder) aber hab’s nicht ganz verstanden.
Kennt jemand eine Funktion oder weiss wie das geht?

Danke
Mario

function GetSpecialFolderPath(const Folder: integer): string;
var
PIDL: PItemIDList;
Path: array[0…MAX_PATH] of char;
Malloc: IMalloc;

begin
Path := ‚‘;
if Succeeded((SHGetSpecialFolderLocation(0, Folder, PIDL))) then
if (SHGetPathFromIDList(PIDL, Path)) then
if Succeeded(ShGetMalloc(Malloc)) then
begin
Malloc.Free(PIDL);
Malloc := nil;
end;
Result := Path;
end;

[Now Supported on Windows NT]

Retrieves the location of a special folder.

WINSHELLAPI HRESULT WINAPI SHGetSpecialFolderLocation(;

HWND hwndOwner,
int nFolder,
LPITEMIDLIST *ppidl
);

Parameters

hwndOwner

Handle of the owner window that the client should specify if it displays a dialog box or message box.

nFolder

Value specifying the folder to retrieve the location of. This parameter can be one of the following values:

CSIDL_BITBUCKET Recycle bin ¾ file system directory containing file objects in the user’s recycle bin. The location of this directory is not in the registry; it is marked with the hidden and system attributes to prevent the user from moving or deleting it.
CSIDL_CONTROLS Control Panel ¾ virtual folder containing icons for the control panel applications.
CSIDL_DESKTOP Windows desktop ¾ virtual folder at the root of the name space.
CSIDL_DESKTOPDIRECTORY File system directory used to physically store file objects on the desktop (not to be confused with the desktop folder itself).
CSIDL_DRIVES My Computer ¾ virtual folder containing everything on the local computer: storage devices, printers, and Control Panel. The folder may also contain mapped network drives.
CSIDL_FONTS Virtual folder containing fonts.
CSIDL_NETHOOD File system directory containing objects that appear in the network neighborhood.
CSIDL_NETWORK Network Neighborhood ¾ virtual folder representing the top level of the network hierarchy.
CSIDL_PERSONAL File system directory that serves as a common respository for documents.
CSIDL_PRINTERS Printers folder ¾ virtual folder containing installed printers.
CSIDL_PROGRAMS File system directory that contains the user’s program groups (which are also file system directories).
CSIDL_RECENT File system directory that contains the user’s most recently used documents.
CSIDL_SENDTO File system directory that contains Send To menu items.
CSIDL_STARTMENU File system directory containing Start menu items.
CSIDL_STARTUP File system directory that corresponds to the user’s Startup program group.
CSIDL_TEMPLATES File system directory that serves as a common repository for document templates.

ppidl

Address that receives a pointer to an item identifier list specifying the folder’s location relative to the root of the name space (the desktop).

Return Values

Returns NOERROR if successful or an OLE-defined error result otherwise.

Nachtrag:

uses ShlObj, ActiveX

;o)