Эта нить обеспечивает интересную информацию о data contained in a .lnk file
sSHGetFileInfoss функция должна быть в состоянии извлечь файл значок.
Документально here, и используется для LNK файла:
Path2Link := 'C:\Stuff\TBear S Saver.lnk';
SHGetFileInfo(PChar(Path2Link), 0, ShInfo1, SizeOf(TSHFILEINFO),
SHGFI_ICON);
// this ShInfo1.hIcon will have the Icon Handle for the Link Icon with
// the small ShortCut arrow added}
Из первой ссылке, вы могли бы построить такую утилиту в C#, где вы бы объявить эту функцию, как:
[DllImport("shell32.dll")]
public static extern IntPtr SHGetFileInfo(
string pszPath, uint dwFileAttributes, ref SHFILEINFO psfi,
uint cbSizeFileInfo, uint uFlags);
Вы также можете построить утилиту в autoit script language, где вы использовали бы эту функцию, объявленную следующим образом:
Func _ShellGetAssocIcon(Const $szFile,Const $IconFlags = 0)
Local $tFileInfo = DllStructCreate($tagSHFILEINFO)
If @error Then
Return SetError(1,@extended,0)
EndIf
Local $Ret = DllCall("shell32.dll","int","SHGetFileInfo","str",$szFile,"dword",0, _
"ptr",DllStructGetPtr($tFileInfo),"uint",DllStructGetSize($tFileInfo),"uint",BitOr($SHGFI_ICON,$IconFlags))
MsgBox(0,0,@error)
Return DllStructGetData($tFileInfo,"hIcon")
EndFunc
Возможно, дайте ему немного больше информации, например, формат struct etc. Но ты получил мой голос. – 2008-12-05 09:33:35