從可執行檔(.exe/.dll)提取第一個圖示並顯示於 TImage。
AnsiString FileName, TempFile;
TIcon *Icon;
if (OpenDialog1->Execute()) {
FileName = OpenDialog1->FileName;
HICON hIcon = ExtractIcon(Form1->Handle, FileName.c_str(), 0); // 索引 0 為第一個圖示
Icon = new TIcon();
Icon->Handle = hIcon;
Icon->SaveToFile(TempFile); // 存成暫存 .ico
Image1->Picture->LoadFromFile(TempFile);
}
需包含 ShellAPI.h,專案連結 shell32.lib。
SHFILEINFO sfi;
SHGetFileInfo(FileName.c_str(), 0, &sfi, sizeof(sfi), SHGFI_ICON | SHGFI_LARGEICON);
// sfi.hIcon 即為大圖示句柄,小圖示用 SHGFI_SMALLICON
// 同樣可指派給 TIcon->Handle 並顯示
SHGetFileInfo 功能更強,可取得檔案類型描述、系統圖示索引等,參考 Win32 SDK 文件。