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);
}
}
}
}
}
}
}
}
}
{
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);
}
}
}
}
}
}
}
}
}
相关文章推荐
- Pivotal Gemfire gfsh shell的使用(2)
- Linux学习笔记(13)——shell scripts
- linux执行shell脚本
- RedHat Linux Shell常用命令(多数也适用于Unix和AIX)
- 更改git bash默认的路径
- shell学习四十六天----文件系统的空间信息df和du命令
- Android adb shell 命令
- linux shell 字符串操作(长度,查找,替换,匹配)详解
- shell学习四十五天----xargs
- shell中$0,$?,$!等的特殊用法
- Git bash 操作记住密码
- shell
- 解决shell脚本中 echo 怎么写入换行到文件
- PowerShell创建虚拟机 (二、实现批量创建)
- Linux Shell 编程学习笔记(1)
- 用C# 调用PowerShell 3.0
- linux shell编程(三) if 和 for
- linux shell编程(二) 条件测试
- shell编程中用到的特殊变量
- shell编程中用到的特殊变量