Probiers eventuell mal mit
SHGetFileInfo Deine Funktion liefert dir erstmal die 32x32 Pixel großen Icons, die in deinem ListView nicht wirklich schön aussehen. Außerdem geht dir zusätzlich noch irgendwie die Transparenz verloren.
Folgende Funktion liefert dir das 16x16 Pixel Icon einer Datei:
Delphi-Quellcode:
function GetFileIcon(FileName: String): HICON;
var
FileInfo: TSHFileInfo;
begin
Result := 0;
if (SHGetFileInfo(PChar(FileName), 0, FileInfo, SizeOf(FileInfo),
SHGFI_ICON OR SHGFI_SMALLICON OR SHGFI_SYSICONINDEX) > 0) then
begin
Result := FileInfo.hIcon;
end;
end;
Du kannst es dann einfach folgendermaßen zu deiner ImageList hinzufügen:
Delphi-Quellcode:
var
Icon: TIcon;
begin
Icon := TIcon.Create;
try
Icon.Handle := GetFileIcon(GetProcessPathByPID(MyProcessID));
if (Icon.Handle > 0) then
begin
ImageList1.AddIcon(Icon);
end;
finally
Icon.Free;
end;
end;
Damit die Transparenz erhalten bleibt stell mal im
OI die Eigenschaft ColorDepth von cdDeviceDependent auf cd32Bit.