问题描述
Icon.ExtractAssociatedIcon只能提取32*32的EXE文件图标,有无方法提取64*64图标?
解决方案
解决方案二:
可以用API来实现(可获取任意文件的图标):ClassFileAttributes'声明一个WindowsAPI函数。PrivateDeclareFunctionSHGetFileInfoLib"shell32"_(ByValpszPathAsString,ByValdwFileAttributesAsInteger,_ByRefsfiAsshfileinfo,ByValcbsfiAsInteger,_ByValuFlagsAsInteger)AsInteger'结构shfileinfoPrivateStructureshfileinfoPublichiconAsIntPtrPubliciiconAsIntegerPublicdwattributesAsInteger<MarshalAs(UnmanagedType.LPStr,sizeconst:=260)>_PublicszdisplaynameAsString<MarshalAs(UnmanagedType.LPStr,sizeconst:=80)>_PublicsztypenameAsStringEndStructure'定义常量名PrivateConstshgfi_smalliconAsInteger=&H1PrivateConstshgfi_largeiconAsInteger=&H0PrivateConstshgfi_iconAsInteger=&H100PrivateConstshgfi_usefileattributesAsInteger=&H10PrivateConstSHGFI_PIDLAsInteger=&H8PrivateConstSHGFI_SYSICONINDEXAsInteger=&H4000'获得图标:返回路径为path的文件的图标(System.Drawing.Icon)。SharedFunctiongetIcon(ByValpathAsString)AsIconDimicoAsIconDimshfi_LargeAsNewshfileinfoSHGetFileInfo(path,0,_shfi_Large,Marshal.SizeOf(shfi_Large),shgfi_largeiconOrshgfi_icon)ico=Icon.FromHandle(shfi_Large.hicon)ReturnicoEndFunctionEndClass
调用方法:DimimgasImage=FileAttributes.getIcon("d:1.exe").ToBitmap
解决方案三:
Icon.ExtractAssociatedIcon()取的是程序的默认显示用图标。真正提取图标需要从文件里导出,然后再用NewIcon(String,Size)载入对应的格式。可以参考这个导出工具
解决方案四:
snvlongquan为什么你给我的代码,出错了?请指教感谢!
解决方案五:
在.Net3.5下运行试试。