?
Vielleicht hilft dir das weiter:
//---------------------------------------------------------------------------
// Extrahiert das Icon einer Exe-Datei:
//
// Parameter:
//
// AnsiString exepath: Der Pfad der zu verwendenden Exe-Datei
// int size: 0 für 16*16 und 1 für 32*32
// TBitmap *bmp: Pointer auf Bitmap; (default == NULL)
// TIcon *ico: Pointer auf Icon; (default == NULL)
//
// Rückgabewerte:
//
// Erfolgreich = 0
// Exe-Datei existert nicht = 1
//
//---------------------------------------------------------------------------
int __fastcall TFmExtractExeIcon::ExtractExeIcon( AnsiString exepath, int size, Graphics::TBitmap *bmp, Graphics::TIcon *ico )
{
if( !FileExists(exepath) )
return 1;
TRect rect;
bool newbmp = false;
bool newico = false;
if( bmp == NULL )
{
bmp = new Graphics::TBitmap();
newbmp = true;
}
if( ico == NULL )
{
ico = new Graphics::TIcon();
newico = true;
}
ico->Handle = ExtractIcon( 0, exepath.c_str(), 0 );
if( size == 0 )
{
rect = Rect(0, 0, 16, 16);
bmp->Width = 16;
bmp->Height = 16;
}
else if( size == 1 )
{
rect = Rect(0, 0, 32, 32);
bmp->Width = 32;
bmp->Height = 32;
}
else
{
rect = Rect(0, 0, 16, 16);
bmp->Width = 16;
bmp->Height = 16;
}
// bmp->Height = ico->Height;
// bmp->Width = ico->Width;
// bmp->Canvas->Draw(0, 0, ico);
bmp->Canvas->StretchDraw(rect, ico);
ico->Height = 16;
ico->Width = 16;
if( newbmp )
delete bmp;
if( newico )
delete ico;
return 0;
}
//---------------------------------------------------------------------------
Keine Ahnung, wo das herkommt, lag bei mir auf der Platte...