【发布时间】:2013-04-29 15:03:38
【问题描述】:
我想创建一个 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# 编写这个任务,对我来说将非常容易。但我在其他地方了解到you shouldn't write shell extensions in .NET。
我有哪些选择?有没有更简单的语言来完成这个 - 也许是 Python?还是我必须硬着头皮在 C++ 中做到这一点?如果是这样,对于尝试在 C++ 中实现 WinAPI shell 扩展的 .NET 开发人员有何建议?
提前谢谢你。
【问题讨论】:
-
看来我的一些研究已经过时了。现在阅读 .NET 4.0 如何改变这种情况......
-
如果性能是唯一的问题,我可能仍然追求.NET 4.0 路线。我认为 5 秒的延迟对于 DeskBand 的加载问题比对于上下文菜单的显示问题要严重得多。
-
根据我链接到的文章:“尽管第 4 版解决了并行问题,但 .NET Framework 仍然是一个影响很大的运行时,并且 .NET Framework 中的 COM 互操作的各个部分不适合在围绕本机代码设计的扩展模型中使用。”
标签: c++ winapi shell-extensions deskband