Huhu :)
Ich würde gerne die Icons von "besonderen" Windows-Verzeichnissen benutzen (Systemsteuerung, Netzwerkverbindungen, Papierkorb etc). Bis XP klappt das auch wunderbar mit SHGetFileInfo, nur unter Vista gibts dann 'ne 0 als Icon-
Handle. Die
GUID's dieser Verzeichnisse bleiben auch die gleichen (über Registry geprüft).
Bisher habe Ich dafür eine erweiterte Funktion von
Sunlight7 benutzt:
Delphi-Quellcode:
const
BuSpecialFile_WorkStation = '::{20D04FE0-3AEA-1069-A2D8-08002B30309D}';
BuSpecialFile_Network = '::{208D2C60-3AEA-1069-A2D7-08002B30309D}';
BuSpecialFile_NetworkConnections = '::{7007ACC7-3202-11D1-AAD2-00805FC1270E}';
BuSpecialFile_Search = '::{1f4de370-d627-11d1-ba4f-00a0c91eedba}';
BuSpecialFile_RecycleBin = '::{645FF040-5081-101B-9F08-00AA002F954E}';
BuSpecialFile_PrinterAndFax = '::{2227A280-3AEA-1069-A2DE-08002B30309D}';
BuSpecialFile_Explorer = '::{450D8FBA-AD25-11D0-98A8-0800361B1103}';
BuSpecialFile_ScheduledTasks = '::{D6277990-4C6A-11CF-8D87-00AA0060F5BF}';
BuSpecialFile_SearchResults = '::{e17d4fc0-5564-11d1-83f2-00a0c90dc849}';
BuSpecialFile_SystemControl = '::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\::{21EC2020-3AEA-1069-A2DD-08002B30309D}';
BuSpecialFile_SystemControl_Print = '::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\::{21EC2020-3AEA-1069-A2DD-08002B30309D}\::{2227A280-3AEA-1069-A2DE-08002B30309D}';
BuSpecialFile_SystemControl_Tasks = '::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\::{21EC2020-3AEA-1069-A2DD-08002B30309D}\::{D6277990-4C6A-11CF-8D87-00AA0060F5BF}';
BuSpecialFile_SystemControl_Network = '::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\::{21EC2020-3AEA-1069-A2DD-08002B30309D}\::{7007ACC7-3202-11D1-AAD2-00805FC1270E}';
BuSpecialFile_SystemControl_ScannerAndCamera = '::{20D04FE0-3AEA-1069-A2D8-08002B30309D}\::{21EC2020-3AEA-1069-A2DD-08002B30309D}\::{E211B736-43FD-11D1-9EFB-0000F8757FCD}';
function BuGetFileIcon(const Name:String;const Large:Boolean=false;Opened:Boolean=false;Selected:Boolean=false;Overlayed:Boolean=false;LinkOverlay:Boolean=false):HIcon;
var
FileInfo: TSHFileInfo;
Flags: Integer;
begin
ZeroMemory(@FileInfo, SizeOf(FileInfo));
Flags := SHGFI_ICON;
if Opened then
Flags := Flags or SHGFI_OPENICON;
if Selected then
Flags := Flags or SHGFI_SELECTED;
if Overlayed then
Flags := Flags or SHGFI_ADDOVERLAYS;
if LinkOverlay then
Flags := Flags or SHGFI_LINKOVERLAY;
if Large then
Flags := Flags or SHGFI_LARGEICON
else
Flags := Flags or SHGFI_SMALLICON;
SHGetFileInfo(PChar(Name), 0, FileInfo, SizeOf(FileInfo), Flags);
Result := FileInfo.hIcon;
end;
Danke, Bumbi