以下代码检索资源管理器在Windows 8中常用文件夹的列表(为清晰起见,删除了错误检查):
CComPtr<IApplicationDocumentLists> pDocList;
pDocList.CoCreateInstance(CLSID_ApplicationDocumentLists);
pDocList->SetAppID(L"Microsoft.Windows.Explorer");
CComPtr<IObjectArray> pArray;
pDocList->GetList(ADLT_FREQUENT, 0, IID_IObjectArray, (void**)&pArray);
这在Windows 10中不起作用。pDocList
有效,pArray
有效,但即使资源管理器跳转列表中有内容,数组也不包含任何项目。
我尝试检索最近的(而不是频繁的)文档列表,但这也不起作用,尽管在这种情况下它的GetList()
失败了。
有谁知道这里发生了什么? Explorer的应用ID是否已更改?
答案 0 :(得分:2)
只需设置cItemsDesired
即可。
pDocList->GetList(ADLT_FREQUENT, 99, IID_IObjectArray, (void**)&pArray);
答案 1 :(得分:1)
好吧,根据Raymond Chen的说法,一个肯定知道他在谈论什么的人,我们不应该这样做,所以我们不会,我感谢Raymond的回应。
但是,我有一些评论。文档根本不清楚是这种情况。例如,IApplicationDocumentLists.SetAppID
的文档说&#34;应用程序在想要检索跳转列表的最近或频繁列表时调用此接口的方法。&#34;注意&#34; 一个跳转列表&#34;,而不是&#34; 其跳转列表&#34;。
如果应用程序可以显示他在资源管理器中经常使用的文件夹列表,那么很难想象对用户有帮助的情况。
如果我们查看用户“最近”文件夹中的快捷方式,我就不会想到它的窥探。这真的有什么不同吗?
无论如何,再次感谢你的回应,雷蒙德。我们会找到代表用户跟踪常用文件夹的其他方法。