您的位置:首页 > 运维架构 > Shell

IFileDialog-》IServiceProvider-》IShellView-》IFolderView-》IShellItemArray

2015-07-13 14:43 639 查看
一段代码,诉说一段历程

{
HRESULT hr = S_FALSE;
IServiceProvider* sp = NULL;
hr = pfd->QueryInterface(IID_IServiceProvider,(void **)&sp);
if (SUCCEEDED(hr) && sp)
{
IShellBrowser* sb = NULL;
hr = sp->QueryService(SID_STopLevelBrowser,IID_IShellBrowser, (void **)&sb);
if (SUCCEEDED(hr) && sb)
{
IShellView* SV = NULL;
hr = sb->QueryActiveShellView(&SV);
if (SUCCEEDED(hr) && SV)
{
IFolderView* FV = NULL;
hr = SV->QueryInterface(IID_IFolderView, (void **)&FV);
if (SUCCEEDED(hr) && FV)
{
IShellItemArray *pItems = NULL;
hr = FV->Items(SVGIO_SELECTION,IID_IShellItemArray,(void **)&pItems);
if (SUCCEEDED(hr) && pItems)
{
DWORD dwNumItems = 0;
pItems->GetCount(&dwNumItems);
for (int i = 0; i < dwNumItems; i++)
{
IShellItem *pItem = NULL;
hr = pItems->GetItemAt(i,&pItem);
if (SUCCEEDED(hr) && pItem)
{
LPWSTR lpSelect = NULL;
pItem->GetDisplayName(SIGDN_DESKTOPABSOLUTEPARSING,&lpSelect);
CString strSelect(lpSelect);
if(!strSelect.IsEmpty())
{
vecfiles.push_back(strSelect);
CoTaskMemFree(lpSelect);
}
}
}
}

}
}
}
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: