我目前正在尝试从桌面检索图标列表以更改它们的位置和/或隐藏它们以及显示其他图标。
我尝试在下面的代码中获取
FolderView
,但它甚至没有显示桌面上的图标数量,因为count
返回0。
HWND hDesktop = GetDesktopWindow();
HWND hDefView = FindWindowEx(hDesktop, NULL, L"SHELLDLL_DefView", NULL);
HWND folderView = FindWindowEx(hShellWnd, NULL, L"SysListView32", NULL);
int count = (int) SendMessage(folderView, LVM_GETITEMCOUNT, 0, 0);
cout << count << endl;
我对变量进行了测试,发现
hDefView
是 NULL
。count
返回0的原因。
编辑: 将
GetDesktopWindow
替换为 GetShellWindow
后,结果始终相同,0
shell 窗口层次结构没有记录,也不稳定。 “ProgMan”通常是“SHELLDLL_DefView”的父级,但如果您更改为幻灯片壁纸,它也可以是“WorkerW”。
最好使用已记录的 shell COM 接口检查/操作桌面:IShellWindows
IShellBrowser
、
IFolderView
和
IShellFolder
。