![]() |
SHGetSpecialFolderLocation mit CSIDL_PROFILES
Hai ihr,
bekommt einer von euch den Pfad zu ![]()
Delphi-Quellcode:
Eigentlich sollte als Result der Pfad zu dem Profileordner kommen. Bei mir scheitert es aber immer bei SHGetSpecialFoler.... Das SUCCEEDED liefert da schon ein False.
uses
ShlObj; function GetShellFolder(CSIDL: integer): string; var pidl: PItemIdList; FolderPath: string; SystemFolder: integer; begin FolderPath := ''; SystemFolder := CSIDL; if SUCCEEDED(SHGetSpecialFolderLocation(0, SystemFolder, pidl)) then begin SetLength(FolderPath, MAX_PATH); SHGetPathFromIDList(pidl, PChar(FolderPath)); SetLength(FolderPath, lstrlen(PChar(FolderPath))); end; Result := FolderPath; end; Mit ist nicht ganz klar was MS damit meint das dies erst aber Version 6.0 gehen soll. Von was soll es den Version 6.0 sein? Edit: Habe mal ganz heimlich ein i in ein o geändert :stupid: |
Re: SHGetSpecialFolderLocation mit CSIDL_PROFILES
Mein D7 und D2005 kennen als erstes schonmal CSIDL_PRIFILES nicht ;), aber auch CSIDL_PROFILES ist denen unbekannt.
Und Ja, es scheint so, als wenn mein WinXP das $003e noch nicht unterstützt und auch wenn ich es jetzt nicht testen kann, so kann ich dennoch bestätigen, das Win2K das auch nicht kennt ^^ [add] Eventuell reicht es dir ja, wenn du CSIDL_PROFILE ($0028) verwendest und dort einfach nur den UserPfad entfernst? |
Re: SHGetSpecialFolderLocation mit CSIDL_PROFILES
Hai Foren-Engel,
was meinst Du denn mit CSIDL_PRIFILES *g* Zitat:
|
Re: SHGetSpecialFolderLocation mit CSIDL_PROFILES
Ich hab damals auch so 'ne Liste gefunden (vor 'nem Jahr, oder so) und weil dort auch einiges nicht ging, hab ich mal bei SHGetSpecialFolderLocation über 'ne Schleife testen lassen ob und was bei welchen Werten vorhanden ist und damals ging es nur bis CSIDL_COMMON_FAVORITES ($001C) bei Win2K.
Eventuell sind das ja auch nur die Werte für/ab Vista :gruebel: |
Re: SHGetSpecialFolderLocation mit CSIDL_PROFILES
Moin Sharky,
beim ersten Eintrag in der CSIDL-Liste steht ein Link bei "Version 5.0". Es geht um die Versionen von SHELL32.DLL, SHLWAPI.DLL und COMCTL32.DLL. Version 6.0 sollte bei XP mit IE 6 vorhanden sein (warum bei mir jetzt 5.82 der ComCtl32 installiert ist weiss ich allerdings auch nicht ;-)) Seltsamerweise ist die Konstante CSIDL_PROFILES in SHLOBJ.H nicht deklariert :gruebel: |
Re: SHGetSpecialFolderLocation mit CSIDL_PROFILES
Zitat:
bei mir ist es auch die Dateiversion "5.82 (xpsp_sp2_rtm.040803-2158)" bei der Produktverion steht dann aber "6.00.2900.2180" Rätsel über Rätsel. |
Re: SHGetSpecialFolderLocation mit CSIDL_PROFILES
hmmm
unter system32 hab ich auch 'ne 5.82.2600.0, aber unter WinSxS\x86_Microsoft.Windows.Common-Controls_... liegt eine 6.0.2600.0 :gruebel: |
Re: SHGetSpecialFolderLocation mit CSIDL_PROFILES
Moin Sharky,
für den angegebenen Fall müsste aber die Shell32.dll-Version ausschlaggebend sein :gruebel: Wenn Du mal den Rückgabewert der Funktion auswertest (nicht nur auf Succeeded prüfen) kommt als Ergebnis: Falscher Parameter. BTW: Im Erfolgsfalle müsstest Du auch noch den durch pidl belegten Speicher wieder freigeben. @Himitsu: Sieht bei mir genauso aus. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:51 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz