ExtractIconExA 函数 (shellapi.h)

ExtractIconEx 函数创建从指定可执行文件、DLL 或图标文件中提取的大或小图标的句柄数组。

语法

UINT ExtractIconExA(
  [in]  LPCSTR lpszFile,
  [in]  int    nIconIndex,
  [out] HICON  *phiconLarge,
  [out] HICON  *phiconSmall,
        UINT   nIcons
);

参数

[in] lpszFile

类型:LPCTSTR

指向以 null 结尾的字符串的指针,该字符串指定将从中提取图标的可执行文件、DLL 或图标文件的名称。

[in] nIconIndex

类型:int

指定要提取的第一个图标的从零开始的索引。 例如,如果此值为零,函数将提取指定文件中的第一个图标。

如果此值为 –1 且 phiconLarge,并且 phiconSmallNULL,则该函数将返回指定文件中图标的总数。 如果文件是可执行文件或 DLL,则返回值是RT_GROUP_ICON资源的数目。 如果该文件是.ico文件,则返回值为 1。

如果此值为负数,并且 phiconLargephiconSmallNULL,则函数首先提取资源标识符等于 nIconIndex绝对值的图标。 例如,使用 -3 提取其资源标识符为 3 的图标。

[out] phiconLarge

类型:HICON*

指向图标句柄数组的指针,该数组接收从文件中提取的大图标的句柄。 如果此参数 NULL,则不会从文件中提取大型图标。

[out] phiconSmall

类型:HICON*

指向图标句柄数组的指针,该数组接收从文件中提取的小图标的句柄。 如果此参数 NULL,则不会从文件中提取小图标。

nIcons

类型:UINT

要从文件中提取的图标数。

返回值

类型:UINT

如果 nIconIndex 参数 -1,并且 phiconLargephiconSmall 参数都 NULL,则返回值为指定文件中包含的图标数。

如果 nIconIndex 参数是除 -1 以外的任何值,并且 phiconLargephiconSmall 不是 NULL,则返回值是从文件中成功提取的图标数。

注意

如果函数遇到错误,它将返回 UINT_MAX。 在这种情况下,可以调用 GetLastError 来检索错误代码。 例如,如果找不到由 lpszFile 指定的文件,而 nIconIndex 参数不是 -1 值,phiconLargephiconSmall 不是 NULL,则此函数将返回 UINT_MAX。 在这种情况下,GetLastError 返回 ERROR_FILE_NOT_FOUND (2)。

言论

不再需要这些图标时,必须通过调用 DestroyIcon 函数来销毁 ExtractIconEx 提取的所有图标

若要检索大图标和小图标的尺寸,请使用此函数和SM_CXICON、SM_CYICON、SM_CXSMICON和SM_CYSMICON标志。

注意

shellapi.h 标头将 ExtractIconEx 定义为一个别名,该别名根据 UNICODE 预处理器常量的定义自动选择此函数的 ANSI 或 Unicode 版本。 将中性编码别名与不中性编码的代码混合使用可能会导致编译或运行时错误不匹配。 有关详细信息,请参阅函数原型的 约定。

要求

要求 价值
最低支持的客户端 Windows XP [仅限桌面应用]
支持的最低服务器 Windows 2000 Server [仅限桌面应用]
目标平台 窗户
标头 shellapi.h
DLL Shell32.dll
API 集 ext-ms-win-shell-shell32-l1-2-1(在 Windows 10 版本 10.0.10240 中引入)

另请参阅

ExtractAssociatedIcon

ExtractAssociatedIconEx

ExtractIcon