如何获取lnk关联的另一程序图标
RT
这个桌面的QQ快捷方式是连接到C:\Program Files (x86)\Tencent\QQ\Bin\QQProtect\Bin\QQProtect.exe
而QQProtect.exe并不包含图标资源。
QQ快捷方式实际的图标资源在%APPDATA%\Microsoft\Installer\{052CFB79-9D62-42E3-8A15-DE66C2C97C3E}\NewShortcut311_0951773981FA4AB2BC21B7DCEC95892A.exe中
我该如何通过该QQ快捷方式得到%APPDATA%\Microsoft\Installer\{052CFB79-9D62-42E3-8A15-DE66C2C97C3E}\NewShortcut311_0951773981FA4AB2BC21B7DCEC95892A.exe呢???
[解决办法]
SHGetFileInfo
SHFILEINFO sfi ;
SHGetFileInfo(TEXT("QQ.lnk"), 0, &sfi, sizeof(SHFILEINFO), SHGFI_ICONLOCATION);
//sfi.szDisplayName就是包含图标的文件的路径
[解决办法]
void CSampleView: OnDraw(CDC * pDC)
{
if( :: SHGetFileInfo(_T("c:\\pwin95\\notepad.exe"),0,
&stFileInfo,sizeof(stFileInfo),SHGFI_ICON))
{
pDC ->DrawIcon(10,10,stFileInfo.hIcon);
}
}
或者:同样功能,Use ExtractIcon Function
void CSampleView:: OnDraw(CDC *pDC)
{
HICON hIcon=:: ExtractIcon(AfxGetInstanceHandle(),_T
("NotePad.exe"),0);
if (hIcon &&hIcon!=(HICON)-1)
pDC->DrawIcon(10,10,hIcon);
}