2

我想创建一个 DeskBand 来在我的 Windows 任务栏上显示一些信息,但是我在努力实现我在 C++ 中需要的功能。我接触 C++ 已经有 10 到 15 年了。在过去的 7 年里,我一直在完全使用 .NET 工作。

在你说之前 - 我知道 DeskBands 已被弃用。但是建议的替换 UI 元素 - 缩略图工具栏 - 不能满足我的需要。我需要一个无论用户切换到哪个应用程序都始终可见的 UI 元素,并且还需要提供足够的空间来显示一行文本——我可以容纳 30 个左右的字符。

我已经能够从 Windows SDK 示例中获得 DeskBand 来编译和运行,但现在我需要实现一些真正的功能 - 特别是......

  • 找到 AppData\Local 文件夹 ( SHGetKnownFolderPath(FOLDERID_LocalAppData...)
  • 查看 XML 文件以进行修改。每当文件更改时,我都需要解析和重新绘制。
  • 解析 XML 文件(我发现pugixml
  • 在我的 DeskBand 中显示 XML 文件中的一些数据
  • 设置计时器以每分钟重绘一次 DeskBand

...而且我意识到我对 C++ 知之甚少,以及我对 .NET 的基类库的依赖程度。如果我用 C# 编写这个任务,对我来说将非常容易。但是我在其他地方了解到,您不应该在 .NET 中编写 shell 扩展

我有哪些选择?有没有更简单的语言来完成这个 - 也许是 Python?还是我必须硬着头皮在 C++ 中做到这一点?如果是这样,对于尝试在 C++ 中实现 WinAPI shell 扩展的 .NET 开发人员有什么建议吗?

先感谢您。

4

1 回答 1

3

Shell Extensions 是 COM 对象,而 C++ 通常是开发 COM 对象时使用的最佳语言,因为 COM 主要是为 C++ 设计的,但它不是唯一可能的语言。COM 具有标准化的体系结构,因此您可以使用 .NET 之外的任何支持 COM 对象开发的语言(Delphi、VB 等)来开发 Shell 扩展(类似于 Win32 API 主要为 C 设计的方式,但任何 C 兼容语言可以访问它)。

于 2013-04-29T15:58:30.743 回答