- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试创建一个 shell 树控件。我不希望从 IShellFilder::EnumObjects
调用返回的所有项目都显示在树上,因为我需要过滤回收站和控制面板等项目。
我的代码是这样的:
IShellFolder* pDesktopFolder=NULL;
SHGetDesktopFolder(&pDesktopFolder);
LPITEMIDLIST pidlParent=NULL;
IShellFolder* pParentFolder = NULL;
pDesktopFolder->BindToObject(pidlParent,NULL, IID_IShellFolder, (LPVOID*)&pParentFolder);
IEnumIDList* pEnumIDList = NULL;
SHCONTF SHFlag=NULL;
SHFlag=SHCONTF_FOLDERS | SHCONTF_INIT_ON_FIRST_NEXT | SHCONTF_NONFOLDERS | SHCONTF_INCLUDEHIDDEN;
HRESULT hr= pParentFolder->EnumObjects(NULL, SHFlag, &pEnumIDList);
if (NOERROR == hr)
{
LPITEMIDLIST pidl = NULL, pidlAbs;
CString csFileType;
HTREEITEM hItem=NULL;
while (NOERROR == pEnumIDList->Next(1, &pidl, NULL))
{
//Filter out control panel, recycle bin items and other non usable items
}
}
我不想获取每个项目的显示名称并对其进行字符串比较,因为名称会根据操作系统语言而改变。
可以根据每个item的CLSID来过滤吗?最好的方法是什么?
最佳答案
当您有一个 IShellFolder 和一个子 pidl 时,您可以使用 SHGetDataFromIDList(...,SHGDFIL_DESCRIPTIONID)
获取 pidl 目标的 CLSID。
另见:
关于c++ - 如何筛选 IShellFolder::EnumObjects 结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10966881/
我正在尝试 Hook Ishellfolder 中的函数 enumobjects。我这样做是因为我想在资源管理器中显示用户不存在的文件。我成功 Hook 了 FindNextFile 和 FindFi
我实现了Shell Namespace Extensions在我的申请中 我实现的接口(interface)之一是 IShellFolder 和 IShellFolder2 一切正常,除了当资源管理器
我正在尝试创建一个 shell 树控件。我不希望从 IShellFilder::EnumObjects 调用返回的所有项目都显示在树上,因为我需要过滤回收站和控制面板等项目。 我的代码是这样的: IS
我在我的应用程序中有非常不正常的工作。我正在使用以下代码枚举所有命名空间和一些根命名空间 - 例如 Nethood 工作非常慢 - 加载超过一分钟(!!)这仅在 Win7 上发生,在较旧的系统上加载是
在我正在处理的命名空间扩展项目中接收父窗口句柄让我抓狂。 用例如下: 用户通过windows资源管理器浏览到一个虚拟文件夹 用户执行搜索(上面的搜索框) 我需要在搜索开始前检索搜索框的文本。 我已经在
我有一个命名空间扩展,可以进行网络调用以显示其内容。 当资源管理器想要显示文件夹的内容时,它会在我的实现中调用 EnumObjects。当进行 webcall 时出错,我想将用户返回到我的 NSE 的
我是一名优秀的程序员,十分优秀!