我目前正在尝试从桌面检索图标列表,以更改其位置和/或隐藏它们以及显示其他图标。
我尝试在下面的代码中获取FolderView
,但它甚至没有显示我在桌面上的图标数量,因为count
返回 0 。< / p>
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
答案 0 :(得分:4)
shell窗口层次结构未记录,也未稳定。 &#34; PROGMAN&#34;通常是&#34; SHELLDLL_DefView&#34;的父母。但是,如果你改为幻灯片壁纸,它也可以是#34; WorkerW&#34;。
最好inspect/manipulate the desktop with the documented shell COM interfaces:IShellWindows
,IShellBrowser
,IFolderView
和IShellFolder
。