Windows系统的shallapi函数
SHGetFileInfo函数
WINSHELLAPI DWORD WINAPI SHGetFileInfo(
LPCTSTR pszPath,
DWORD dwFileAttributes,
SHFILEINFO FAR *psfi,
UINT cbFileInfo,
UINT uFlags
);
SHGetFileInfo的定义
MSDN上的定义是:
Retrieves information about an object in the file system, such as a file, folder, directory, or drive root.
它在shellapi.h中定义,需要包含头文件#include <shellapi.h>
SHGetFileInfo()函数提供关于文件系统对象的信息。这个对象可以是文件,文件夹,目录或驱动器根。返回值代表相当多的返回状态,这与uFlags参数的设置有关。使用这个函数,可以期望:
确定可执行文件的目标平台(x64, Win32,Win16,MS-DOS)
获取各种有特色的文件图标(小的,大的,有关联重叠的,选中的,打开的)
读出其它显示属性,如文件类型(显示在探测器类型列上的简短描述)和显示名(出现在名字列上)
读出任何其它属性,可以是文件特有的,如,是否可以拷贝,移动,删除或重命名,是否它可以形成一个快捷方式,它是否有子文件夹,是否是共享的,是拖拽目标,或有附加的属性页,等等。
应该注意的是,
在调用SHGetFileInfo()之前,必须使用 CoInitialize 或者OleInitialize 初始化COM,否则表面上能够使用,但是会造成不安全或者丧失部分功能。例如:如果不初始化COM,那么调用该函数就无法得到.htm/.mht/.xml文件的图标。
参数说明
WINSHELLAPI DWORD WINAPI SHGetFileInfo(
LPCTSTR pszPath,
DWORD dwFileAttributes,
SHFILEINFO FAR *psfi,
UINT cbFileInfo,
UINT uFlags
);
pszPath 一个包含要取得信息的文件相对或绝对路径的缓冲。它可以处理长或短文件名。(也就是指定的文件路径)注[1]
dwFileAttributes 资料上说,这个参数仅用于uFlags中包含SHGFI_USEFILEATTRIBUTES标志的情况(一般不使用)。如此,