操纵桌面图标的位置

时间:2018-04-22 09:02:33

标签: c++ winapi desktop

我目前正在尝试从桌面检索图标列表,以更改其位置和/或隐藏它们以及显示其他图标。

我尝试在下面的代码中获取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;

我对变量进行了测试,发现hDefViewNULL 可能是count返回 0 的原因。

编辑:GetDesktopWindow替换GetShellWindow后,结果始终相同, 0

1 个答案:

答案 0 :(得分:4)

shell窗口层次结构未记录,也未稳定。 &#34; PROGMAN&#34;通常是&#34; SHELLDLL_DefView&#34;的父母。但是,如果你改为幻灯片壁纸,它也可以是#34; WorkerW&#34;。

最好inspect/manipulate the desktop with the documented shell COM interfacesIShellWindowsIShellBrowserIFolderViewIShellFolder