Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Get Windows Special Folders (https://www.delphipraxis.net/172564-get-windows-special-folders.html)

terence14 11. Jan 2013 08:12

Get Windows Special Folders
 
Liebe DP Gemeinde,
trotz vieler Postings über die CSIDL_xxx vordefinierten
Werte von speziellen Pfaden unter Windows, stelle ich
immer wieder fest, daß manche Werte funktionieren, andere
leider nicht.

Aus diesem Grunde habe ich ein kleines Tool gemacht - im
zip-Archive natürlich das komplette Test Project.

MfG,
terence

Im Anhang
PSpecialPathes-Test_2013_01_11.zip - 225.470 Bytes

Popov 11. Jan 2013 08:48

AW: Get Windows Special Folders
 
Die sollten schon funktionieren, aber je nach Delphi-Version sind einige Konstanten noch unbekannt.

p80286 11. Jan 2013 09:42

AW: Get Windows Special Folders
 
Na und dann läßt Du sie dir in einer Schleife ausgeben.
Und es gibt wirklich ein paar Werte da hab ich bisher noch kein Wording für gefunden, und umgekehrt wordings da ist angeblich der Übergabewert unbekannt.

Es muß ja auch noch etwas für "undocumented windows" geben.

Gruß
K-H

P.S.
Bevor Du nach Details fragst, die liegen zu Hause gaanz tief unten...

Popov 11. Jan 2013 10:57

AW: Get Windows Special Folders
 
Da mein Delphi nicht alle Konstanten kennt, habe ich sie mir in einer meiner Units neu definiert und näher angeguckt. Nebenbei habe ich mir paar Kommentare dazu notiert (muss nicht vollständig und richtig sein). Vielleicht kann es einer gebrauchen:

Delphi-Quellcode:
  CSIDL_DESKTOP                  = $0000; // %HomeDir%\Desktop (virtueller Ordner)
  CSIDL_INTERNET                 = $0001; // (??? -leer- Internet Explorer) (virtueller Ordner)
  CSIDL_PROGRAMS                 = $0002; // %HomeDir%\Startmenü\Programme;
  CSIDL_CONTROLS                 = $0003; // (??? -leer- Icons für Systemsteuerung) (virtueller Ordner)
  CSIDL_PRINTERS                 = $0004; // (??? -leer- Installierte Drucker) (virtueller Ordner)
  CSIDL_PERSONAL                 = $0005; // %HomeDir%\Dokumente;
  CSIDL_FAVORITES                = $0006; // %HomeDir%\Favoriten;
  CSIDL_STARTUP                  = $0007; // %HomeDir%\Programme\Autostart;
  CSIDL_RECENT                   = $0008; // %HomeDir%\Recent; (um einen Eintrag in dieses Verzeichnis zu erzeugen, sollte SHAddToRecentDocs benutzt werden)
  CSIDL_SENDTO                   = $0009; // %HomeDir%\SendTo;
  CSIDL_BITBUCKET                = $000a; // (??? -leer- Recycle Bin)
  CSIDL_STARTMENU                = $000b; // %HomeDir%\Startmenü;
  CSIDL_MYMUSIC                  = $000d; // %HomeDir%\Dokumente\Eigene Musik;
  CSIDL_MYVIDEO                  = $000e; // %HomeDir%\Dokumente\Eigene Videos;
  CSIDL_DESKTOPDIRECTORY         = $0010; // %HomeDir%\Desktop; (liefert den Desktop-Pfad, allerdings... siehe Hinweis unten)
    {hier werden die Objekte auf dem Desktop physisch gespeichert (nicht zu verwechseln mit CSIDL_DESKTOP), ein typisches Verzeichnis ist C:\Windows\username\Desktop)}
  CSIDL_DRIVES                   = $0011; // (??? -leer- Arbeitsplatz [Laufwerke, Drucker, Systemsteuerung, usw]) (virtueller Ordner)
  CSIDL_NETWORK                  = $0012; // (??? -leer- Netzwerkumgebung-virtuelles Verzeichnis)
  CSIDL_NETHOOD                  = $0013; // %HomeDir%\Netzwerkumgebung;
  CSIDL_FONTS                    = $0014; // %WinDir%\Fonts;
  CSIDL_TEMPLATES                = $0015; // %HomeDir%\Vorlagen;
  CSIDL_COMMON_STARTMENU         = $0016; // %AllUsers%\Startmenü; (Nur für WinNT).
  CSIDL_COMMON_PROGRAMS          = $0017; // %AllUsers%\Startmenü\Programme;
  CSIDL_COMMON_STARTUP           = $0018; // %AllUsers%\Startmenü\Programme\Autostart; (Nur für WinNT).
  CSIDL_COMMON_DESKTOPDIRECTORY  = $0019; // %AllUsers%\Desktop; (Nur für WinNT)
  CSIDL_APPDATA                  = $001a; // %HomeDir%\Anwendungsdaten;
  CSIDL_PRINTHOOD                = $001b; // %HomeDir%\Druckumgebung;
  CSIDL_LOCAL_APPDATA            = $001c; // %HomeDir%\Lokale Einstellungen\Anwendungsdaten;
  CSIDL_ALTSTARTUP               = $001d; // (??? -leer- veraltet)
  CSIDL_COMMON_ALTSTARTUP        = $001e; // (??? -leer- veraltet) (Nur für WinNT)
  CSIDL_COMMON_FAVORITES         = $001f; // %AllUsers%\Favoriten; (Ablage für gemeinsame Favoriten) (Nur für WinNT).
  CSIDL_INTERNET_CACHE           = $0020; // %HomeDir%\Temporary Internet Files;
  CSIDL_COOKIES                  = $0021; // %HomeDir%\Cookies;
  CSIDL_HISTORY                  = $0022; // %HomeDir%\Verlauf;
  CSIDL_COMMON_APPDATA           = $0023; // %AllUsers%\Anwendungsdaten;
  CSIDL_WINDOWS                  = $0024; // %WinDir%; (Wird als sicherere Alternative zu GetWindowsDirectory empfohlen)
//CSIDL_SYSTEM                   = $0025; // %SysDir%; (siehe auch $0029, gleich; wird als sicherere Alternative zu GetSystemDirectory empfohlen)
  CSIDL_PROGRAM_FILES            = $0026; // %ProgramFiles%;
  CSIDL_MYPICTURES               = $0027; // %HomeDir%\Dokumente\Eigene Bilder;
  CSIDL_PROFILE                  = $0028; // %HomeDir%; (Verzeichnis für Benutzerprofil)
  CSIDL_SYSTEM                   = $0029; // %SysDir%; (siehe auch $0025, gleich; wird als sicherere Alternative zu GetSystemDirectory empfohlen)
//                                =
  CSIDL_PROGRAM_FILES_COMMON     = $002B; // %ProgramFiles%\Common; (Verzeichnis für Gemeinsame Dateien)
  CSIDL_COMMON_TEMPLATES         = $002D; // %AllUsers%\All Users\Templates; (Nur für WinNT)
  CSIDL_COMMON_DOCUMENTS         = $002E; // %AllUsers%\All Users\Dokumente;
  CSIDL_COMMON_ADMINTOOLS        = $002F; // %AllUsers%\Startmenü\Programme\Verwaltung;
  CSIDL_ADMINTOOLS               = $0030; // %HomeDir%\Startmenü\Programme\Verwaltung;
  CSIDL_COMMON_MUSIC             = $0035; // %AllUsers%\Dokumente\Eigene Musik;
  CSIDL_COMMON_PICTURES          = $0036; // %AllUsers%\Dokumente\Eigene Bilder\;
  CSIDL_COMMON_VIDEOS            = $0037; // %AllUsers%\Dokumente\Eigene Videos;
//                                =
  CSIDL_RESOURCES                = $0038; // %WinDir%\Resources; (für Themes und andere Windows Ressourcen)
  CSIDL_RESOURCES_LOCALIZED      = $0039; // %WinDir%\Resources\<LangID> ([Liefert leeren String] eigentlich wie oben, bzw.: für Themes und andere Windows-Spezifische Ressourcen)
  CSIDL_CDBURN_AREA              = $003B; // %HomeDir%\Lokale Einstellungen\Anwendungsdaten\Microsoft\CD Burning

terence14 14. Jan 2013 11:41

AW: Get Windows Special Folders
 
@Popov

Danke für die Liste.

Ich habe z.B. das Problem,

daß a) CSIDL_FAVORITES
und b) CSIDL_COMMON_FAVORITES

beide den Pfad für a), also "c:\users\xyz\Favorites" zurückgeben,
anstatt daß b) den Pfad "c:\users\public\Favorites" liefert.

Ich verwende WinVista HomeEdition und Delphi2005.

Deshalb muß ich tricksen, um b) zu bekommen,
und setzte den Pfad aus Einzelteilen zusammen :)

MfG,
terence

hathor 14. Jan 2013 13:38

AW: Get Windows Special Folders
 
Das gab es HIER schon...

Popov 14. Jan 2013 13:40

AW: Get Windows Special Folders
 
Das sollte schon seine Richtigkeit haben. Allerdings hat MS seit Vista neue Methode der spez. Ordner Ermittlung eingeführt.

terence14 14. Jan 2013 14:34

AW: Get Windows Special Folders
 
Zitat:

Zitat von hathor (Beitrag 1198982)
Das gab es HIER schon...


Vielen Dank,
die Seite habe ich schon gefunden und gelesen.

Hat aber trotzdem nichts daran geändert, daß ich
für CSIDL_FAVORITES und CSIDL_COMMON_FAVORITES immer
den Pfad für CSIDL_FAVORITES, also den, des momentan
eingeloggten Users bekomme.

Komischerweise funktioniert es bei allen anderen
vordefinierten Pfaden.

Siehe Liste dazu:
Wurde erstellt unter Windows Vista Home Edition und Delphi2005:

87 ist mein LoginName :)

0000: 'C:\Users\87\Desktop\';
0001: '\';
0002: 'C:\Users\87\AppData\Roaming\Microsoft\Windows\Sta rt Menu\Programs\';
0003: '\';
0004: '\';
0005: 'C:\Users\87\Documents\';
0006: 'C:\Users\87\Favorites\';
0007: 'C:\Users\87\AppData\Roaming\Microsoft\Windows\Sta rt Menu\Programs\Startup\';
0008: 'C:\Users\87\AppData\Roaming\Microsoft\Windows\Rec ent\';
0009: 'C:\Users\87\AppData\Roaming\Microsoft\Windows\Sen dTo\';
000A: '\';
000B: 'C:\Users\87\AppData\Roaming\Microsoft\Windows\Sta rt Menu\';
000C: '\';
000D: 'C:\Users\87\Music\';
000E: 'C:\Users\87\Videos\';
000F: '\';
0010: 'C:\Users\87\Desktop\';
0011: '\';
0012: '\';
0013: 'C:\Users\87\AppData\Roaming\Microsoft\Windows\Net work Shortcuts\';
0014: 'C:\Windows\Fonts\';
0015: 'C:\Users\87\AppData\Roaming\Microsoft\Windows\Tem plates\';
0016: 'C:\ProgramData\Microsoft\Windows\Start Menu\';
0017: 'C:\ProgramData\Microsoft\Windows\Start Menu\Programs\';
0018: 'C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup\';
0019: 'C:\Users\Public\Desktop\';
001A: 'C:\Users\87\AppData\Roaming\';
001B: 'C:\Users\87\AppData\Roaming\Microsoft\Windows\Pri nter Shortcuts\';
001C: 'C:\Users\87\AppData\Local\';
001D: 'C:\Users\87\AppData\Roaming\Microsoft\Windows\Sta rt Menu\Programs\Startup\';
001E: 'C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Startup\';
001F: 'C:\Users\87\Favorites\';
0020: 'C:\Users\87\AppData\Local\Microsoft\Windows\Tempo rary Internet Files\';
0021: 'C:\Users\87\AppData\Roaming\Microsoft\Windows\Coo kies\';
0022: 'C:\Users\87\AppData\Local\Microsoft\Windows\Histo ry\';
0023: 'C:\ProgramData\';
0024: 'C:\Windows\';
0025: 'C:\Windows\System32\';
0026: 'C:\Program Files\';
0027: 'C:\Users\87\Pictures\';
0028: 'C:\Users\87\';
0029: 'C:\Windows\System32\';
002A: 'C:\Program Files\';
002B: 'C:\Program Files\Common Files\';
002C: 'C:\Program Files\Common Files\';
002D: 'C:\ProgramData\Microsoft\Windows\Templates\';
002E: 'C:\Users\Public\Documents\';
002F: 'C:\ProgramData\Microsoft\Windows\Start Menu\Programs\Administrative Tools\';
0030: 'C:\Users\87\AppData\Roaming\Microsoft\Windows\Sta rt Menu\Programs\Administrative Tools\';
0031: '\';
0032: '\';
0033: '\';
0034: '\';
0035: 'C:\Users\Public\Music\';
0036: 'C:\Users\Public\Pictures\';
0037: 'C:\Users\Public\Videos\';
0038: 'C:\Windows\Resources\';
0039: '\';
003A: 'C:\ProgramData\OEM Links\';
003B: 'C:\Users\87\AppData\Local\Microsoft\Windows\Burn\ Burn\';
003C: '\';
...
00FF: '\';
0100: 'C:\Users\87\Desktop\';

--

MfG,
terence


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:37 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