AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Shell ILCombine Function

Ein Thema von Garfield · begonnen am 5. Mai 2010 · letzter Beitrag vom 5. Mai 2010
Antwort Antwort
Benutzerbild von Garfield
Garfield

Registriert seit: 9. Jul 2004
Ort: Aken (Anhalt-Bitterfeld)
1.334 Beiträge
 
Delphi XE5 Professional
 
#1

Shell ILCombine Function

  Alt 5. Mai 2010, 19:35
Mit der Shellfunktion ILCombine kann man absolute und relative PItemIdList zu einer neuen absoluten zusammenfügen. Mit der absoluten PItemIdList hole ich per SHGetFileInfoW das Image für den Tree. Bei normalen Verzeichnissen reichen relative PItemIdList, bei Laufwerken und einigen Systemordnern muss es die absolute sein.

Mein Tree basiert auf dem Treeview Sample von Matthias Simmack in Luckies WinAPI Tutorial. Ich verwende folgende Routinen:

Delphi-Quellcode:
constructor TFolderId.Create(const hTvw: HWND; hParent: HTREEITEM; iFolder: IShellFolder; pidlNode: PItemIdList);
var
  Item : TTVItemW;
  fid : TFolderId;
begin
  FFolder := iFolder;
  FPIDL_REL := CopyPIDL(pidlNode);

  if hParent <> nil
  then begin
    Item.mask := TVIF_HANDLE or TVIF_PARAM;
    Item.hItem := hParent;
    TreeView_GetItemW(hTvw, Item);
    fid := TFolderId(Item.lParam);
    FPIDL_ABS := ILCombine(fid.FPIDL_ABS, pidlNode);
  end
  else FPIDL_ABS := CopyPIDL(pidlNode);
end;
Delphi-Quellcode:
function GetSHImage(const pidl: PItemIdList; fOpen: boolean): integer;
var
  Flags : DWord;
  FileInfo : TSHFileInfoW;
begin
  if fOpen
  then Flags := SHGFI_PIDL or SHGFI_SYSICONINDEX or SHGFI_OPENICON
  else Flags := SHGFI_PIDL or SHGFI_SYSICONINDEX;

  if Succeeded(SHGetFileInfoW(Pchar(pidl), 0, FileInfo, sizeof(FileInfo), Flags))
  then Result := FileInfo.iIcon
  else Result := -1;
end;
Die Funktion soll seit Win 2000 Prof bzw Server mit Shell32.dll Version 5.0 existieren. Auf meinem Win XP SP 3 funktioniert es, in der Firma auf einem Rechner mit Win XP SP 2 (shell32.dll v6.0.2900.3402) jedoch nicht. Könnt Ihr mal sehen, wie es bei Euch aussieht!?
Angehängte Dateien
Dateityp: 7z opendirdialog_190.7z (42,5 KB, 5x aufgerufen)
Gruss Garfield
Ubuntu 22.04: Laz2.2.2/FPC3.2.2 - VirtBox6.1+W10: D7PE, DXE5Prof
  Mit Zitat antworten Zitat
Benutzerbild von Garfield
Garfield

Registriert seit: 9. Jul 2004
Ort: Aken (Anhalt-Bitterfeld)
1.334 Beiträge
 
Delphi XE5 Professional
 
#2

Re: Shell ILCombine Function

  Alt 5. Mai 2010, 22:28
Asche auf mein Haupt. Der Fehler lag an einer anderen Stelle.
Gruss Garfield
Ubuntu 22.04: Laz2.2.2/FPC3.2.2 - VirtBox6.1+W10: D7PE, DXE5Prof
  Mit Zitat antworten Zitat
Antwort Antwort


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 06:02 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