Wczytywanie ikony z aplikacji

0

Witam, posiadam ścieżkę aplikacji i chciałbym wczytać jej ikonę próbuję tą procedurą jednak nie działa dla wszystkich aplikacji

 var FileHandle : THandle;
H : HIcon;
Icon : TIcon;
begin

FileHandle := LoadLibraryEx(PChar(listbox1.items[listbox1.itemindex]),
0,LOAD_LIBRARY_AS_DATAFILE);
Icon := TIcon.create;
try
H := LoadImage(FileHandle,'MAINICON',IMAGE_ICON,32,32,0);
Icon.Handle := H;
if H > 0 then
begin
Canvas.Draw(48,48,Icon);
end;
finally
Icon.Free;
end;
end;
2

Bo nie każda musi mieć icone o nazwie 'MAINICON'.
Użyj tego: http://msdn.microsoft.com/pl-pl/library/windows/desktop/ms648037%28v=vs.85%29.aspx

0

Jak chce tylko ikonę to ShGetFileInfo np:

uses
  ShellApi;

function GetFileIcon(AFileName: string): TIcon;
var
  sfi: TShFileInfo;
begin
  FillMemory(@sfi,SizeOf(TSHFileInfo),0); //niby nie konieczne
  result:= TIcon.Create;
  ShGetFileInfo(PChar(AFileName), FILE_ATTRIBUTE_NORMAL, sfi, SizeOf(TShFileInfo),
      SHGFI_ICON or SHGFI_LARGEICON);
  result.Handle:= sfi.hIcon;
end;
0
kAzek napisał(a):

Jak chce tylko ikonę to ShGetFileInfo np:

uses
  ShellApi;

function GetFileIcon(AFileName: string): TIcon;
var
  sfi: TShFileInfo;
begin
  FillMemory(@sfi,SizeOf(TSHFileInfo),0); //niby nie konieczne
  result:= TIcon.Create;
  ShGetFileInfo(PChar(AFileName), FILE_ATTRIBUTE_NORMAL, sfi, SizeOf(TShFileInfo),
      SHGFI_ICON or SHGFI_LARGEICON);
  result.Handle:= sfi.hIcon;
end;

Praktycznie taki sam kod znalazłem gdy ostatnio szukałem odpowiedzi na ten sam problem. Ja nie wiem, ci ludzie jakiś inny google mają czy po prostu nie umieją szukać?!? Masakra. Więcej szukania, mniej postów na forum i nauczycie się korzystać...

1 użytkowników online, w tym zalogowanych: 0, gości: 1