SHFILEINFO shFileInfo;
SHGetFileInfo(strFilename,0,&shFileInfo,sizeof(SHFILEINFO),
SHGFI_DISPLAYNAME|SHGFI_ICON|SHGFI_SMALLICON|SHGFI_TYPENAME|SHGFI_ATTRIBUTES);
/////////////////////////////////////////
if(shFileInfo.dwAttributes&SFGAO_LINK)
//是快捷方式这种方法不行,为什么?不管是不是.pif,.lnk都是一个值

解决方案 »

  1.   

    就判断后缀不就行了, 无非就是 .pif, .lnk, .url
      

  2.   

    MS不会这么弱吧,我想一定有更好的办法,再说后缀是可以注册更改的,比如说有.url,.lnk,.pif什么的,也不好统计.我现在用的是一种也挺弱的方法,在"文件类型"说明中找"快捷方式"关键字,有没有更好的方法?
      

  3.   

    刚刚试了一下,你的代码可以运行,结果也对。
    建议检查一下SHGetFileInfo()是否失败,比如因为文件名错误。
      

  4.   

    你是说代码在你哪里运行正常吗?.pif和.txt你看到shFileInfo.dwAttributes的值改变了吗?
      

  5.   

    分别是:lnk=0x40010177,other=0x40000177.
      

  6.   

    我又试了试,还是不行,为什么同样的代码会有两种结果,在我这里无论是不是LNK返回的都是other的值,而且也函数也成功了.Why?
      

  7.   

    不是NT,PWIN98,VC6,SDI程序,在OnDraw()中调用。