AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi [Gelöst]Inhalt von Arbeitsplatz parsen und ausgeben
Thema durchsuchen
Ansicht
Themen-Optionen

[Gelöst]Inhalt von Arbeitsplatz parsen und ausgeben

Ein Thema von sieppl · begonnen am 19. Aug 2004 · letzter Beitrag vom 20. Aug 2004
 
Benutzerbild von sieppl
sieppl

Registriert seit: 15. Aug 2004
Ort: Münster
198 Beiträge
 
Delphi 7 Professional
 
#1

[Gelöst]Inhalt von Arbeitsplatz parsen und ausgeben

  Alt 19. Aug 2004, 12:09
Hallo,

folgender Code spuckt mir bei allen möglichen CSIDL_* Ordnern den Inhalt aus, ausgerechnet bei CSIDL_DRIVES (Arbeitsplatz) funktioniert es nicht. Dabei enthält EnumObjects die richtige Anzahl, die PIDLs stimmem auch, nur die Namen will er nicht ausspucken..
Falls Syntaxfehler drin sind, sorry, ich musste den Code abtippen.
Die benötigten Units sind natürlich alle eingebunden, wie gesagt es funktioniert mit allen anderen CSIDL_* die ich probiert habe.

Ach ja, in der StrRetToSTring wird der uType auf STREET_* getestet und dementsprechend behandelt, das Ding ist aus der ShellCtrls-Unit !

Vielen Dank für Hilfe.

Delphi-Quellcode:
procedure TForm1.ShellListView1Click(Sender: TObject);
var
  Allocator: IMalloc;
  PDesktop, PSubfolder: IShellFolder;
  PContent: IEnumIDList;
  PIDL: PItemIDList
  StrRet: TStrRet;
  NumIDs: LongWord;

begin
  if SHGetMalloc(Allocator) = NOERROR then
  begin
    if (SHGetSpecialFolderLocation(handle, CSIDL_DRIVES, PIDL) = S_OK) and
         (SHGetDesktopFolder(PDesktop) = S_OK) then
    try
    begin
      PDesktop.BindToObject(PIDL, nil, IID_IShellFolder, Pointer(PSubFolder));
      PSubFolder.EnumObjects(handle, SHCONTF_FOLDERS or SHCONTF_NONFOLDERS, PContent);
      while PContent.Next(1, PIDL, NumIDs) <> S_FALSE do
      begin
        FillChar(StrRet, SizeOf(StrRet), 0);
        PDesktop.GetDisplayNameOf(PIDL, SHGDN_NORMAL, StrRet);
        Memo1.Lines.Add(StrRetToString(PIDL, StrRet));
      end;
    end;
    finally
      //Hier noch Pointer und sonstigen Speicher freigeben..
    end;
  end;
end;
Sebastian
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 18:55 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