Einzelnen Beitrag anzeigen

max666

Registriert seit: 21. Dez 2003
50 Beiträge
 
#3

Re: CSIDL_CONTROLS funktioniert nicht!!!

  Alt 5. Mär 2005, 14:57
Hallo!

Ich habe mit folgender Funktion das virtuelle Verzeichnis von z.B. CSIDL_PROGRAMS ermittelt!

Delphi-Quellcode:
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));
Und mit Hilfe der Variablen "CSIDLPROGRAMS" und einer rekursieven Funktion kann man dann das gesammt Verzeichnis auslesen! Bei CSIDL_CONTROL geht das aber nicht!

Gruß
max666
  Mit Zitat antworten Zitat