操纵桌面图标的位置

问题描述 投票:0回答:1

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

我尝试在下面的代码中获取

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

c++ winapi desktop
1个回答
4
投票

shell 窗口层次结构没有记录,也不稳定。 “ProgMan”通常是“SHELLDLL_DefView”的父级,但如果您更改为幻灯片壁纸,它也可以是“WorkerW”。

最好使用已记录的 shell COM 接口检查/操作桌面:IShellWindows

IShellBrowser
IFolderView
IShellFolder

© www.soinside.com 2019 - 2024. All rights reserved.