Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi fehlende Konstanten in der Unit SHLOBJ.PAS (https://www.delphipraxis.net/134504-fehlende-konstanten-der-unit-shlobj-pas.html)

markus5766h 23. Mai 2009 13:45


fehlende Konstanten in der Unit SHLOBJ.PAS
 
Hallo,

im Folgenden einige Konstanten, die in der Unit ShlObj.pas nicht definiert sind :

Delphi-Quellcode:

implementation

{$R *.dfm}
uses ShlObj;

Const
 CSIDL_CURR_MUSIK          = $000D;      // Dokumente und Einstellungen\[CurrentUser]\Eigene Dateien\Eigene Musik
 CSIDL_CURR_VIDEO          = $000E;      // Dokumente und Einstellungen\[CurrentUser]\Eigene Dateien\Eigene Videos
 CSIDL_LOCAL_APPDATA       = $001C;      // Dokumente und Einstellungen\[CurrentUser]\Anwendungsdaten
 CSIDL_COMMON_APPDATA      = $0023;      // Dokumente und Einstellungen\AllUsers\Anwendungsdaten
 CSIDL_WINDOWS             = $0024;      // Windows-Verzeichnis
 CSIDL_SYSTEM              = $0025;      // Windows\System32-Verzeichnis
 CSIDL_PROGRAMS_FIRST      = $0026;      // Programmverzeichnis der ersten(!!!) Windows-Partition,
                                           // muss nicht die aktuelle Partition sein
 CSIDL_CURR_PICTURES       = $0027;      // Dokumente und Einstellungen\[CurrentUser]\Eigene Dateien\Eigene Bilder
 CSIDL_CURRUSER            = $0028;      // Dokumente und Einstellungen\[CurrentUser]
 CSIDL_SYSTEM2              = $0029;      // Windows\System32-Verzeichnis
 CSIDL_SHARED_FILES        = $002B;      // Programme\Gemeinsame Dateien
 CSIDL_COMMON_TEMPLATES    = $002D;      // Dokumente und Einstellungen\All Users\Vorlagen
 CSIDL_COMMON_DOKUMENTS    = $002E;      // Dokumente und Einstellungen\All Users\Dokumente
 CSIDL_COMMON_MANAGEMENT   = $002F;      // Dokumente und Einstellungen\All Users\Startmenü\Programme\Verwaltung
 CSIDL_CURR_MANAGEMENT     = $0030;      // Dokumente und Einstellungen\[CurrentUser]\Startmenü\Programme\Verwaltung
 CSIDL_COMMON_MUSIK        = $0035;      // Dokumente und Einstellungen\All Users\Eigene Dateien\Eigene Musik
 CSIDL_COMMON_PICTURES     = $0036;      // Dokumente und Einstellungen\All Users\Eigene Dateien\Eigene Bilder
 CSIDL_COMMON_VIDEO        = $0037;      // Dokumente und Einstellungen\All Users\Eigene Dateien\Eigene Videos
 CSIDL_RESOURCES           = $0038;      // Windows\Resources
 CSIDL_RESOURCES_C_SPEC    = $0039;      // Windows\Resources\0407
 CSIDL_WINBURNING          = $003B;      // [microsoft brennerverzeichnis >cd burning<]

function GetSpecialFolder (aFolder: Integer): String;
var
  pIdL: PItemIDList;
  Path: Array [0..Max_Path] Of Char;
  Allocator: IMalloc;
begin
  // ItemIdList für den Ordner holen
  SHGetSpecialFolderLocation (0, aFolder, pIdL);

  // ItemIdList in String umwandeln lassen
  SHGetPathFromIDList (pIDL, Path);

  // Speicher wieder freigeben
  if Succeeded (SHGetMalloc (Allocator)) then
    begin
      Allocator.Free (pIdL);
      {$IFDEF VER100}
      Allocator.Release;
      {$ENDIF}
    end;

  Result := Path;
end;

Muetze1 23. Mai 2009 13:47

Re: fehlende Konstanten in der Unit SHLOBJ.PAS
 
Auch mal in die SHFolder.pas geschaut?

markus5766h 23. Mai 2009 13:55

Re: fehlende Konstanten in der Unit SHLOBJ.PAS
 
.. jo
bei mir sind diese Konstanten nicht(!) definiert
soll heißen: nicht alle

toms 23. Mai 2009 13:56

Re: fehlende Konstanten in der Unit SHLOBJ.PAS
 
Hallo

Anstatt eigene Konstantennamen würde ich die in Shlobj.h deklarierten verwenden. (Siehe msdn). Siehe auch unit ShellFolder;

@Muetze1: Bei älteren Delphi Versionen sind noch nicht alle Konstanten vorhanden. Bei D6, z.B. fehlt CSIDL_MYMUSIC etc.

Christian Seehase 23. Mai 2009 15:14

Re: fehlende Konstanten in der Unit SHLOBJ.PAS
 
Moin Zusammen,

Zitat:

Zitat von toms
@Muetze1: Bei älteren Delphi Versionen sind noch nicht alle Konstanten vorhanden. Bei D6, z.B. fehlt CSIDL_MYMUSIC etc.

weswegen man auch immer ein, möglichst, frisches PSDK incl. der Header-Dateien zur Hand haben sollte ;-)

sx2008 23. Mai 2009 17:29

Re: fehlende Konstanten in der Unit SHLOBJ.PAS
 
Zitat:

Zitat von Christian Seehase
weswegen man auch immer ein, möglichst, frisches PSDK incl. der Header-Dateien zur Hand haben sollte ;-)

Das hat mich gerade zu folgender Idee gebracht:
Eine Typelibrary kann ja unter anderem Konstanten, Enums, Records, Unions und Funktionsaufrufe für DLLs deklarieren.
Man könnte also die ganze Windows API in einer (oder mehreren) Typelibrary ablegen.
Keine Programmiersprache müsste sich mit den Headerfiles des PSDK auseinandersetzen, sondern nur die aktuellste TLB der Windows API importieren.
Selbst Kommentare und kontextsensitive zu jeder Funktion, Konstante,... wäre mit der TLB möglich.
Auch ältere Versionen wie D5, D6, D7 kämen so in der Genuss, auf wirklich alle Funktionen der Windows API zugreifen zu können.

Aber das wird wohl nur ein Wunschtraum bleiben... :(


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