我想创建一个DeskBand。我必须使用C ++吗?

时间:2013-04-29 15:03:38

标签: c++ winapi shell-extensions deskband

我想创建一个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 ++中执行此操作?如果是这样,对.NET开发人员试图在C ++中实现WinAPI shell扩展的任何建议?

提前谢谢。

1 个答案:

答案 0 :(得分:3)

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