在网上找过许多文章,都没有成功获取过大图标,只能获取最大32x32。最后自己尝试了相关的windows api,终于找到一个可用的。
主要用到的C++的PrivateExtractIcons函数,具体说明请看:PrivateExtractIcons function
该函数原文有个说明可能需要注意一下:[This function is not intended for general use. It may be altered or unavailable in subsequent versions of Windows.]
1 UINT WINAPI PrivateExtractIcons( 2 _In_ LPCTSTR lpszFile, 3 _In_ int nIconIndex, 4 _In_ int cxIcon, 5 _In_ int cyIcon, 6 _Out_opt_ HICON *phicon, 7 _Out_opt_ UINT *piconid, 8 _In_ UINT nIcons, 9 _In_ UINT flags 10 );
C#使用DLL import进行引用。
1 [DllImport("User32.dll")] 2 public static extern int PrivateExtractIcons( 3 string lpszFile, //文件名可以是exe,dll,ico,cur,ani,bmp 4 int nIconIndex, //从第几个图标开始获取 5 int cxIcon, //获取图标的尺寸x 6 int cyIcon, //获取图标的尺寸y 7 IntPtr[] phicon, //获取到的图标指针数组 8 int[] piconid, //图标对应的资源编号 9 int nIcons,