怎样用SHGetFileInfo函数和SHFILEINFO一起获得文件的信息.
比如,我想获得C盘下的一个文件名为: test.exe
怎样获得它的信息呢?包抱有:文件属性和文件类型,特别的文件类型?
就是说它是应用程序,还是文件夹,还是文本文件?得到信息后把它保存在字符串变量里.
var
  a1,a2:String;
  a1用来保存文件属性,a2用来保存文件类型.

解决方案 »

  1.   

    http://baike.baidu.com/view/1079766.htm
    楼主参考下这个吧
      

  2.   


    前人的.
    要加上ShellApi, FileCtrl这两个单元  //获取显示名
      SHGetFileInfo(PChar(FileName),0,FileInfo,SizeOf(FileInfo),SHGFI_DISPLAYNAME);
      edit2.text := FileInfo.szDisplayName;
      //获取类型名
      SHGetFileInfo(PChar(FileName),0,FileInfo,SizeOf(FileInfo),SHGFI_TYPENAME);
      edit3.text := FileInfo.szTypeName;
      //获取文件的图标
      SHGetFileInfo(PChar(FileName),0,FileInfo,SizeOf(FileInfo),SHGFI_ICON);
      Drawicon(canvas.handle,5,170,FileInfo.hIcon);
      form1.repaint;
      //获取文件属性
      attributes := GetFileAttributes(PChar(FileName));
      attrs := '';
      If Bool(attributes and FILE_ATTRIBUTE_READONLY) then attrs := attrs + 'R';
      If Bool(attributes and FILE_ATTRIBUTE_HIDDEN) then attrs := attrs + 'H';
      If Bool(attributes and FILE_ATTRIBUTE_SYSTEM) then attrs := attrs + 'S';
      If Bool(attributes and FILE_ATTRIBUTE_ARCHIVE) then attrs := attrs + 'A';
      edit4.text := attrs;
      // 获取文件最后修改日期和时间