1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
|
{$IFDEF UNICODE}
function PrivateExtractIcons(lpszFile: PChar; nIconIndex, cxIcon, cyIcon: integer; phicon: PHANDLE; piconid: PDWORD; nicon, flags: DWORD): DWORD; stdcall ; external 'user32.dll' name 'PrivateExtractIconsW';
{$ELSE}
function PrivateExtractIcons(lpszFile: PChar; nIconIndex, cxIcon, cyIcon: integer; phicon: PHANDLE; piconid: PDWORD; nicon, flags: DWORD): DWORD; stdcall ; external 'user32.dll' name 'PrivateExtractIconsA';
{$ENDIF}
procedure TMainForm.Button1Click(Sender: TObject);
begin
ExtraireIcone(Pchar(Application.ExeName),0,Image1);
end;
procedure TMainForm.ExtraireIcone(Fichier : String;Index : Integer; ToImage : TImage);
var
hIcon : THandle;
nIconId : DWORD;
Icon : TIcon;
begin
// icone 48*48
if PrivateExtractIcons (PChar(Fichier), index, 48, 48, @hIcon, @nIconId, 1, LR_LOADFROMFILE) <>0 then
try
Icon:=TIcon.Create;
try
Icon.Handle:=hIcon;
Icon.SaveToFile(ExtractFilePath(ParamStr(0))+'Aicon.ico');
toImage.Picture.LoadFromFile(ExtractFilePath(ParamStr(0))+'Aicon.ico');
finally
Icon.Free;
end;
// toImage.Picture.Icon.Handle:=hIcon; // ceci ne fonctionne pas , POURQUOI ?
finally
DestroyIcon (hIcon);
end;
end; |
Partager