Hi,
Windows legt alle Dateien, die sich am Desktop befinden in einem eigenen Ordner ab.
Das Ermitteln des Pfades für den Desktop funktioniert tadellos.
Unter W2000 (XP?) werden aber scheinbar mehrere Pfade verwendet. Nämlich einen für Alle-User und einen für den aktuellen User.
Zum ermitteln des Pfades für den Desktop verwende ich folgenden Code:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24:
| function GetSpecialFolder(hWindow: HWND; Folder: Integer): String; var pMalloc: IMalloc; pidl: PItemIDList; Path: PChar; begin 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; |
Aufgerufen wird es so:
Delphi-Quelltext
1:
| dirPfad:=GetSpecialFolder(Handle, CSIDL_DESKTOPDIRECTORY); |
Unter W98 funktioniert das auch.
Unter W2000 aber nicht, weil eben nur der Pfad für den aktuellen User ermittelt wird. Zur vollständigen Anzeige benötige ich aber auch den Pfad für den Desktop aller User. Wie komme ich zu diesem??
Gruß
Thomas