易语言SHGetFileInfoA获取文件信息

SHGetFileInfoA原型

DWORD_PTR SHGetFileInfoA(
  LPCSTR      pszPath,
  DWORD       dwFileAttributes,
  SHFILEINFOA *psfi,
  UINT        cbFileInfo,
  UINT        uFlags
);

取文件信息SHGetFileInfoA

  1. .版本 2
  2.  
  3. .DLL命令 取文件信息_, 整数型, "shell32.dll", "SHGetFileInfoA", , SHGetFileInfo
  4.     .参数 文件路径, 文本型, , pszPath
  5.     .参数 文件属性, 整数型, , dwFileAttributes
  6.     .参数 文件信息结构, 文件信息_, , psfi
  7.     .参数 文件信息结构大小, 整数型, , cbFileInfo
  8.     .参数 信息标志, 整数型, , uFlags

数据类型 SHFILEINFO结构定义如下:

  1. typedef struct _SHFILEINFO {  
  2.   HICON hIcon;  //文件的图标句柄
  3.   int   iIcon;  //图标的系统索引号
  4.   DWORD dwAttributes;  //文件的属性值
  5.   TCHAR szDisplayName[MAX_PATH]; //文件的显示名 
  6.   TCHAR szTypeName[80];  //文件的类型名
  7. } SHFILEINFO;
.版本 2
 
.数据类型 文件信息_, , SHFILEINFO
    .成员 图标句柄, 整数型, , , hIcon
    .成员 图标索引, 整数型, , , iIcon
    .成员 图标属性, 整数型, , , dwAttributes
    .成员 显示名称, 字节型, , "260", szDisplayName
    .成员 类型名称, 字节型, , "80", szTypeName

易语言调用

我们先在C盘c:\autoexec.bat建立一个文件。

.版本 2

.程序集 窗口程序集_启动窗口

.子程序 _按钮_取文件信息_被单击
.局部变量 局部_文件信息, 文件信息_

CoInitialize (0)

取文件信息_ (“c:\autoexec.bat”, 0, 局部_文件信息, 352, 位或 (#SHGFI_DISPLAYNAME, #SHGFI_TYPENAME))
列表框_运行结果.清空 ()
列表框_运行结果.加入项目 (“文件名:” + 子程序_字节数组到文本 (局部_文件信息.显示名称), )
列表框_运行结果.加入项目 (“文件类型: ” + 子程序_字节数组到文本 (局部_文件信息.类型名称), )

.子程序 子程序_字节数组到文本, 文本型
.参数 参数_文本, 字节型, 数组
.局部变量 局部_计次变量, 整数型
.局部变量 局部_临时文本, 文本型

.计次循环首 (取数组成员数 (参数_文本), 局部_计次变量)
局部_临时文本 = 局部_临时文本 + 字符 (参数_文本 [局部_计次变量])
.计次循环尾 ()
返回 (局部_临时文本)

CoInitialize

在调用SHGetFileInfo()之前,必须使用 CoInitialize 初始化COM,否则表面上能够使用,但是会造成不安全或者丧失部分功能。

.版本 2
 
.DLL命令 CoInitialize, 整数型, "ole32", "CoInitialize"
    .参数 pvReserved, 整数型, , 0

发布日期:

所属分类: 易语言 标签: