Как сохранить иконку в файл имея её хендл?

Материал из DRKB

Как сохранить иконку в файл имея её хендл?[править | править код]

uses
  Windows,ActiveX;

function OleSavePictureFile(dispPicture: IDispatch; bstrFileName: TBStr): HResult; stdcall;
                                                                        external 'oleaut32.dll';

// icon - дескриптор иконки
// FileName - файл, в который сохранять
// DestroyAfterSave - уничтожать дескриптор иконки после сохранения или нет
function StoreIconFile(Icon: HICON; FileName: string; DestroyAfterSave: Boolean = False): Boolean;
const
  IID_IPictureDisp:TGUID = '{7BF80981-BF32-101A-8BBB-00AA00300CAB}';
var
  pd: TPictDesc;
  ipd: IPictureDisp;
begin
  pd.cbSizeOfStruct := SizeOf(TPictDesc);
  pd.picType := PICTYPE_ICON;
  pd.hIcon := Icon;
  Result := (OleCreatePictureIndirect(pd, IID_IPictureDisp, DestroyAfterSave, ipd) = S_OK)
    and (OleSavePictureFile(ipd, StringToOLEStr(FileName)) = S_OK);
end;


Author: Krid
Source: Взято из http://forum.sources.ru
ID: 02351