Как получить все иконки которые есть в exe-файле?
Вопрос: Как получить все иконки которые есть в exe-файле?
Ответ : code: -------------------------------------------------------------------------------- typedef HICON* phIcon; void __fastcall TForm1::Button1Click( TObject *Sender ) { int numIcons; phIcon pTheLargeIcons, pTheSmallIcons; int LargeIconWidth; int SmallIconWidth; int SmallIconHeight; int i, y, x, n; TIcon *Icon; Graphics::TBitmap *theBitmap; if ( !OpenDialog1->Execute() ) return ; numIcons = ExtractIconEx( OpenDialog1->FileName.c_str(), -1, NULL, NULL, 0 ); Caption = numIcons; if ( numIcons > 0 ) { try { LargeIconWidth = GetSystemMetrics( SM_CXICON ); SmallIconWidth = GetSystemMetrics( SM_CXSMICON ); SmallIconHeight = GetSystemMetrics( SM_CYSMICON ); pTheLargeIcons = new HICON[ numIcons ]; pTheSmallIcons = new HICON[ numIcons ]; ZeroMemory( pTheLargeIcons, numIcons * sizeof( HICON ) ); ZeroMemory( pTheSmallIcons, numIcons * sizeof( HICON ) ); ExtractIconEx( OpenDialog1->FileName.c_str(), 0, pTheLargeIcons, pTheSmallIcons, numIcons ); y = 0; x = 0; n = 0; for ( int i = 0; i < numIcons; i++ ) { if ( n * LargeIconWidth > (Width - LargeIconWidth) ) { y += LargeIconWidth; x = 0; n = 0; } DrawIcon( Canvas->Handle, x, y, pTheLargeIcons[ i ] ); n++; x = n * LargeIconWidth; Icon = new TIcon; theBitmap = new Graphics::TBitmap; Icon->Handle = pTheSmallIcons[ i ]; theBitmap->Width = Icon->Width; theBitmap->Height = Icon->Height; theBitmap->Canvas->Draw( 0, 0, Icon ); Icon->Free(); Canvas->StretchDraw( Rect( i * SmallIconWidth, 300, ( i + 1 ) * SmallIconWidth, 300 + SmallIconHeight ), theBitmap ); theBitmap->Free(); } } __finally { delete [] pTheLargeIcons; delete [] pTheSmallIcons; } } else ShowMessage( "No icons" ); } --------------------------------------------------------------------------------
Содержание раздела