AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) SHGetSpecialFolderLocation mit CSIDL_PROFILES
Thema durchsuchen
Ansicht
Themen-Optionen

SHGetSpecialFolderLocation mit CSIDL_PROFILES

Ein Thema von Sharky · begonnen am 20. Nov 2005 · letzter Beitrag vom 20. Nov 2005
Antwort Antwort
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#1

SHGetSpecialFolderLocation mit CSIDL_PROFILES

  Alt 20. Nov 2005, 07:11
Hai ihr,

bekommt einer von euch den Pfad zu CSIDL_PROFILES mit diesem Code:
Delphi-Quellcode:
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;
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.

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
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.166 Beiträge
 
Delphi 12 Athens
 
#2

Re: SHGetSpecialFolderLocation mit CSIDL_PROFILES

  Alt 20. Nov 2005, 07:33
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?
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#3

Re: SHGetSpecialFolderLocation mit CSIDL_PROFILES

  Alt 20. Nov 2005, 07:37
Hai Foren-Engel,

was meinst Du denn mit CSIDL_PRIFILES *g*
Zitat von himitsu:
..Eventuell reicht es dir ja, wenn du CSIDL_PROFILE ($0028) verwendest und dort einfach nur den UserPfad entfernst?
Jup. Das kann ich natürlich machen. Ich bin nur beim lesen der ganzen CSIDL_* über diese gestolpert und wollte es mal testen.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.166 Beiträge
 
Delphi 12 Athens
 
#4

Re: SHGetSpecialFolderLocation mit CSIDL_PROFILES

  Alt 20. Nov 2005, 07:45
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
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: SHGetSpecialFolderLocation mit CSIDL_PROFILES

  Alt 20. Nov 2005, 16:14
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
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von Sharky
Sharky

Registriert seit: 29. Mai 2002
Ort: Frankfurt
8.251 Beiträge
 
Delphi 2006 Professional
 
#6

Re: SHGetSpecialFolderLocation mit CSIDL_PROFILES

  Alt 20. Nov 2005, 17:19
Zitat von Christian Seehase:
... (warum bei mir jetzt 5.82 der ComCtl32 installiert ist weiss ich allerdings auch nicht) ...
Hai Christian,

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.
Stephan B.
"Lasst den Gänsen ihre Füßchen"
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
43.166 Beiträge
 
Delphi 12 Athens
 
#7

Re: SHGetSpecialFolderLocation mit CSIDL_PROFILES

  Alt 20. Nov 2005, 17:34
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
Garbage Collector ... Delphianer erzeugen keinen Müll, also brauchen sie auch keinen Müllsucher.
my Delphi wish list : BugReports/FeatureRequests
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#8

Re: SHGetSpecialFolderLocation mit CSIDL_PROFILES

  Alt 20. Nov 2005, 17:56
Moin Sharky,

für den angegebenen Fall müsste aber die Shell32.dll-Version ausschlaggebend sein
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.
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:42 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz