Shell ILCombine Function
Liste der Anhänge anzeigen (Anzahl: 1)
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:
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!?
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; |
Re: Shell ILCombine Function
Asche auf mein Haupt. Der Fehler lag an einer anderen Stelle.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:56 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