c# - 如何获取(逻辑)桌面上的项目总数(C#)

标签 c# windows c#-2.0 desktop special-folders

让我详细说说。 “项目”是指您在桌面 (Windows) 中看到的所有项目,包括“我的电脑”、“回收站”、所有快捷方式等。如果我选​​择桌面上的所有项目,我会在属性中得到计数显示。这是我想要的,以编程方式。

我遇到的问题:

我们看到的桌面有来 self 的帐户的项目,还有 All Users 的桌面项目以及其他快捷方式,如“我的电脑”、“回收站”。总共有3件事。所以我不能只从物理路径到桌面目录获取项目计数。所以这失败了:

int count =
    Directory.GetFiles(Environment.GetFolderPath(Environment.SpecialFolder
                                                            .DesktopDirectory)
                      ).Length;

我知道 SpecialFolder.Desktop 代表我们看到的逻辑桌面。但这再次失败,因为 GetFolderPath() 再次获取用户桌面的物理路径:

int count = 
    Directory.GetFiles(Environment.GetFolderPath(Environment.SpecialFolder
                                                            .Desktop)
                      ).Length;

在用户桌面上获取总计数的正确方法是什么?

最佳答案

Windows shell 对此提供全面全面的支持。

  1. 调用SHGetDesktopFolder()得到一个IShellFolder用于桌面。
  2. 调用IShellFolder::EnumObjects()获取内容。

Code Project article从 C# 的角度给出了一些使用示例。

关于c# - 如何获取(逻辑)桌面上的项目总数(C#),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7426889/

相关文章:

c# - 获取异步 : not returning HttpResponseMessage

windows - 在 Windows 中,如何删除一个文本文件中存在于另一个文本文件中的所有行?

windows - 找不到用于 apache/windows 的 mod_wsgi

c# - 从数据库中填充函数字典

c# - 如何确定实际的 Signal-R 消息大小

c# - 如何解析文本文件?

windows - 批处理文件,检查字符串是否包含另一个具有特殊字符的字符串

c# - 无法加载文件或程序集“System.Data.SQLite.SEE.License,版本=1.0.117.0”

pdf - 如何使用itextsharp API从PDF读取特定页面的内容

c# - asp :checkbox does not fire when checkbox is unchecked 的 OnCheckedChanged 事件处理程序