Win7 命名空间扩展确定 IShellItem 是文件还是文件夹



我正在为Windows 7开发某种命名空间扩展。我的扩展在上下文菜单中为所有文件和文件夹提供了一些特定于应用程序的内容。但我想以不同的方式处理文件和文件夹。有没有办法确定提供接口对象IShellItem是文件夹还是文件?

您可以使用 IShellItem::GetAttributes 方法,如下所示:

SFGAOF att = 0;
if (SUCCEEDED(pItem->GetAttributes(SFGAO_FOLDER, &att))) // pItem is a IShellItem*
{
    if (att & SFGAO_FOLDER)
    {
        // it's a folder
    }
}