积极答复者
如何获取桌面所有图标的名称

问题
答案
-
你这是绕过营业员去翻仓库……
获得桌面图标应该用IFolderView::Items,参考https://devblogs.microsoft.com/oldnewthing/20130318-00/?p=4933
Visual C++ MVP- 已标记为答案 jimmy_q 2019年11月21日 7:14
全部回复
-
你这是绕过营业员去翻仓库……
获得桌面图标应该用IFolderView::Items,参考https://devblogs.microsoft.com/oldnewthing/20130318-00/?p=4933
Visual C++ MVP- 已标记为答案 jimmy_q 2019年11月21日 7:14
-
XP不支持这个接口,不过XP的桌面窗口是支持WM_GETISHELLBROWSER的,你可以通过这个消息获得IShellBrowser再用类似的办法获得IFolderView。如果你不能往资源管理器注入DLL的话也可以往XP的桌面窗口下的列表窗口发LVM_GETNEXTITEM。这个列表窗口在桌面下的位置会变化(比如你启用了桌面壁纸轮换的话,就要到WorkerW而不是SHELLDLL_DefView下面去找SysListView32)。LVM_GETNEXTITEM返回的LVITEM的lParam就是PIDL了。之后用IShellFolder::GetDisplayNameOf获取名字。
Visual C++ MVP