【问题标题】:Manipulating the positions of desktop icons操作桌面图标的位置
【发布时间】:2018-04-22 09:02:32
【问题描述】:

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

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

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

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

【问题讨论】:

  • 其实你应该打开Desktop文件夹并枚举那里的文件。
  • 这不是重复的,因为这篇文章对我没有帮助。 @VTT 我想稍后获取隐藏图标的图标计数。
  • @VTT 图标来自虚拟位置两个不同的文件系统文件夹。
  • @VTT ComputerRecycle Bin 等内容显示为图标但不在文件夹中

标签: c++ winapi desktop


【解决方案1】:

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

inspect/manipulate the desktop with the documented shell COM interfaces: IShellWindows, IShellBrowser, IFolderViewIShellFolder 更好。

【讨论】:

  • 如果您在此答案中包含重要的接口会有所帮助。
猜你喜欢
  • 2010-09-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-25
  • 1970-01-01
  • 2010-11-04
  • 1970-01-01
  • 2011-11-18
相关资源
最近更新 更多