我用SHGetFileInfo得到文件的相关属性(文件类型,图标)。这个函数的第一个参数应该是只写文件名(而不需要写绝对路径)就可以的吧?因为它是通过扩展名来得到文件类型的。在实际使用中,确实一般情况下可以成功,可以得到正确得到文件类型等。但当文件名很长时,这个函数得到的文件类型就错了!!!比如:
SHFILEINFO fileInfoS;SHGetFileInfo("aaaaa........a.doc",FILE_ATTRIBUTE_NORMAL,&fileInfoS,sizeof(fileInfoS), SHGFI_USEFILEATTRIBUTES|SHGFI_TYPENAME|SHGFI_ICON);如果第一个参数"aaa.....a.doc"长度很长(MAX_PATH),那么fileIfoS中的文件属性就不是"word文档",而是变成了"系统文件夹"了,这是为什么呀?还望高手赐教

解决方案 »

  1.   

    比MAX_PATH都长怎么可能会有这样的文件。
      

  2.   

    当然不会比MAX_PATH长。
    但上面的问题却是存在的。
      

  3.   

    只传扩展名(.doc)就可以了
    你的扩展名总不会>MAX_PATH吧
      

  4.   

    你的文件:aaaaa....a.doc文件本身,即使不超过MAX_PATH,如果加上他本身的路径,就已经大于MAX_PATH了,我刚才测试了一下:如果路径长度超长,则文件夹内部的文件不可以访问!
      

  5.   

    SHGetFileInfo 函数使用的是绝对路径,是你的当前环境路径+相对路径+文件名