delphi Ordnerpfad abrufen

8

Ich arbeite mit Delphi 7 und möchte den Pfad meines Verzeichnisses .. / Alle Benutzer / Dokumente ermitteln.
Ich bin auf folgenden Code gestoßen:

%Vor%

Es funktioniert gut, aber es unterstützt nicht CSIDL_COMMON_DOCUMENTS , was den gewünschten Pfad zurückgibt.

Außerdem sollte nach MS CSIDL nicht mehr verwendet werden Verwenden Sie KNOWNFOLDERID .
Und ich muss diese App auf mehreren Betriebssystemen (nur Windows) arbeiten.

Wie kann ich das machen?
Hilfe wird geschätzt:)

    
Shirish11 03.01.2012, 13:09
quelle

4 Antworten

5

Aus meiner Sicht ist nichts falsch daran, SHGetSpecialFolderPath über CSIDL_COMMON_DOCUMENTS aufzurufen. Wenn Sie XP unterstützen müssen, können Sie keine bekannten Ordner-IDs verwenden. Sie könnten Code schreiben, der bekannte Ordner-IDs unter Vista und höher verwendet, und auf früheren Systemen auf CSIDL zurückgreifen. Aber warum stören? MS hat das für Sie mit SHGetSpecialFolderPath erledigt.

    
David Heffernan 03.01.2012, 13:40
quelle
3

Soll nicht ShGetFolderPath von shell32.dll? Dies setzt die Verwendung von Windows 2000 mit IE5 oder neuer voraus.

Sie müssen shlobj zur Benutzungszeile für den Code hinzufügen, der davon Gebrauch macht.

Da es in der Quelle keine Definition für SHGetFolderPath gibt, können Sie Folgendes vor dem Code verwenden, der sie verwendet:

%Vor%

Delphi 7 verwendet die Wide-Version der Routine nicht, daher können Sie diesen Code verwenden.

    
Petesh 03.01.2012 13:29
quelle
2

Wie bereits erwähnt, verwenden Sie die SHGetSpecialFolderPath-Funktion. Vista und W7 machen die CSIDL / Ordner-Konvertierung für Sie. Wenn Sie die neuere API verwenden möchten, sollte dies zum Trick führen: Bitte beachten Sie, dass dies nur von Vista aus funktioniert.

%Vor%     
whosrdaddy 03.01.2012 13:53
quelle
2

Wie von Embarcadero in diesem Dokument empfohlen: VistaUACandDelphi.pdf

%Vor%

Benutze es so:

%Vor%     
Sahara 05.12.2013 10:28
quelle

Tags und Links