![]() |
CSIDL_CONTROLS funktioniert nicht!!!
Hallo!
Ich wollte mal das virtuelle Verzeichnis der Systemsteuerung auslesen und alle Programme in eine Tabelle auflisten. Mit CSIDL_PROGRAMS usw. funktioniert das auch. Nur mit CSIDL_CONTROLS geht das nicht! Hat jemand eine Idee, wie ich an die Einträge in der Systemsteuerung kommt? Gruß max666 |
Re: CSIDL_CONTROLS funktioniert nicht!!!
Zitat:
|
Re: CSIDL_CONTROLS funktioniert nicht!!!
Hallo!
Ich habe mit folgender Funktion das virtuelle Verzeichnis von z.B. CSIDL_PROGRAMS ermittelt!
Delphi-Quellcode:
Und mit Hilfe der Variablen "CSIDLPROGRAMS" und einer rekursieven Funktion kann man dann das gesammt Verzeichnis auslesen! Bei CSIDL_CONTROL geht das aber nicht!
function GetSpecialFolder(hWindow: HWND; Folder: Integer): String;
var pMalloc: IMalloc; pidl: PItemIDList; Path: PChar; begin // get IMalloc interface pointer if (SHGetMalloc(pMalloc) <> S_OK) then begin MessageBox(hWindow, 'Couldn''t get pointer to IMalloc interface.', 'SHGetMalloc(pMalloc)', 16); Exit; end; SHGetSpecialFolderLocation(hWindow, Folder, pidl); GetMem(Path, MAX_PATH); SHGetPathFromIDList(pidl, Path); Result := Path; FreeMem(Path); pMalloc.Free(pidl); end; procedure desktopview; var Handle: HWND; FileInfo: TSHFileInfo; PIDL: PItemIDList; begin CSIDLPROGRAMS:=(GetSpecialFolder(Handle, CSIDL_PROGRAMS)); Gruß max666 |
Re: CSIDL_CONTROLS funktioniert nicht!!!
Weil das auch ein virtueller Ordner ist, den es nicht wirklich auf der Platte gibt. Zum Auslesen der Systemsteuerung kannst/musst du die passenden Shell-Funktionen bemühen. Du könntest spaßeshalber mal einen Blick in die Beispiele aus Luckies
![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:19 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-2025 by Thomas Breitkreuz