[Now Supported on Windows NT]
检索有关文件系统中的对象的信息,例如文件,文件夹,目录或驱动器根目录。
WINSHELLAPI DWORD WINAPI SHGetFileInfo
LPCTSTR 【* PSFI】, | |
DWORD 【dwFileAttributes】, | |
SHFILEINFO FAR 【* PSFI】, | |
UINT 【cbFileInfo】, | |
UINT 【uFlags】 | |
); |
参数
【* PSFI】
指向包含路径和文件名的缓冲区。绝对路径和相对路径都是有效的。如果【uFlags】包含SHGFI_PIDL,则值【* PSFI】必须是ITEMIDLIST结构的地址,该结构包含唯一标识shell名称空间中的文件的项标识符列表。
该字符串可以使用短(8.3格式)或长文件名。
【dwFileAttributes】
文件属性标志数组(FILE_ATTRIBUTE_值)。如果【uFlags】不包含SHGFI_USEFILEATTRIBUTES值,则忽略该参数。
【PSFI】和【cbFileInfo】
接收文件信息的SHFILEINFO结构的地址和大小(以字节为单位)。
【uFlags】
指定要检索的文件信息的标志。此参数可以是以下值的组合:
SHGFI_ATTRIBUTES | 检索文件属性标志。标志被复制到由【PSFI】指定的结构的dwAttributes成员。 |
SHGFI_DISPLAYNAME | 检索文件的显示名称。该名称被复制到由【PSFI】指定的结构的szDisplayName成员。 返回的显示名称使用长文件名(如果有),而不是文件名的8.3形式。 |
SHGFI_EXETYPE | 如果【* PSFI】标识可执行文件,则返回可执行文件的类型。有关更多信息,请参阅下面的注释。 |
SHGFI_ICON | 检索表示文件的图标的句柄和系统映像列表中图标的索引。该句柄被复制到由【PSFI】指定的结构的惠康成员,索引被复制到图标成员。返回值是系统映像列表的句柄。 |
SHGFI_ICONLOCATION | 检索包含表示文件的图标的文件的名称。该名称复制到【PSFI】指定的结构的szDisplayName成员。 |
SHGFI_LARGEICON | 修改SHGFI_ICON,导致该函数检索文件的大图标。 |
SHGFI_LINKOVERLAY | 修改SHGFI_ICON,导致该函数将链接覆盖添加到文件的图标。 |
SHGFI_OPENICON | 修改SHGFI_ICON,导致该函数检索文件的打开图标。容器对象显示一个打开的图标,表示容器已打开。 |
SHGFI_PIDL | 表示【* PSFI】是ITEMIDLIST结构的地址,而不是路径名称。 |
SHGFI_SELECTED | 修改SHGFI_ICON,使文件的图标与系统突出显示颜色混合。 |
SHGFI_SHELLICONSIZE | 修改SHGFI_ICON,导致该函数检索shell大小的图标。如果未指定此标志,则该函数将根据系统度量值对图标进行大小调整。 |
SHGFI_SMALLICON | 修改SHGFI_ICON,导致该函数检索文件的小图标。 |
SHGFI_SYSICONINDEX | 检索系统映像列表中图标的索引。索引被复制到【PSFI】指定的结构的图标成员。返回值是系统映像列表的句柄。 |
SHGFI_TYPENAME | 检索描述文件类型的字符串。该字符串被复制到由【PSFI】指定的结构的szTypeName成员。 |
SHGFI_USEFILEATTRIBUTES | 表示该函数应使用【dwFileAttributes】参数。 |
要检索可执行文件类型,【uFlags】必须只指定SHGFI_EXETYPE。返回值指定可执行文件的类型:
0 | 不可执行文件或错误条件。 |
LOWORD = NE or PE HIWORD = 3.0, 3.5, or 4.0 | Windows应用程序 |
LOWORD = MZ HIWORD = 0 | MS-DOS .EXE,.COM或.BAT文件 |
LOWORD = PE HIWORD = 0 | Win32控制台应用程序 |
返回值
*返回一个值,其含义取决于【uFlags】参数。如果【uFlags】指定SHGFI_EXETYPE值,则返回值表示可执行文件的类型。有关更多信息,请参阅下面的注释。
*如果【uFlags】包含SHGFI_ICON或SHGFI_SYSICONINDEX值,则返回值是包含大图标图像的系统映像列表的句柄。如果还包含SHGFI_SMALLICON值,则返回值是包含小图标图像的图像列表的句柄。
*如果【uFlags】不包括SHGFI_EXETYPE,SHGFI_ICON,SHGFI_SYSICONINDEX或SHGFI_SMALLICON,则返回值为非零,函数成功,否则返回0。