2013-04-29 71 views
1

我想创建一个DeskBand来显示我的Windows任务栏上的一些信息,但是我正在努力实现我在C++中需要的功能。自从我接触C++已经过去了大约10 - 15年。过去7年来我一直在.NET中工作。我想创建一个DeskBand。我必须使用C++吗?

在您说出来之前 - 我知道DeskBands已被弃用。但是建议的替代用户界面元素 - 缩略图工具栏 - 不符合我的需求。我需要一个不断向用户显示的UI元素,而不管他们切换到哪个应用程序,并且还提供足够的空间来显示一行文本 - 我可以在30个字符左右的空间中获得。

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

  • 定位的应用程序数据\本地文件夹( SHGetKnownFolderPath(FOLDERID_LocalAppData...
  • 观察XML文件以进行修改。我需要解析并重新绘制文件更改。
  • 解析XML文件(我发现pugixml
  • 显示XML文件中的一些数据我DeskBand
  • 设置一个计时器重绘DeskBand每分钟

一次... ...和我意识到我对C++的了解有多少,以及我是如何依赖.NET基类库的。如果我用C#编写它,这个任务对我来说会非常容易。但我在别处了解到,you shouldn't write shell extensions in .NET

我有什么选择?有没有更简单的语言来完成这个 - 也许是Python?或者我必须咬紧牙关,用C++来做到这一点?如果是这样,对于尝试在C++中实现WinAPI外壳扩展的.NET开发人员的任何建议?

预先感谢您。

+0

看来我的一些研究已经过时了。现在阅读.NET 4.0如何改变这种情况...... – 2013-04-29 15:27:19

+1

不要打扰用.NET 4来尝试它:[现在.NET Framework的第4版支持进程内并行运行时,现在现在可以在托管代码中编写外壳扩展了吗?](http://blogs.msdn.com/b/oldnewthing/archive/2013/02/22/10396079.aspx)。 “答案仍然是否定的。” – 2013-04-29 15:52:08

+0

如果性能是唯一的问题,我可能会继续使用.NET 4.0路线。我认为对于加载DeskBand来说,五秒延迟是一个不太重要的问题,而不是用于显示上下文菜单的问题。 – 2013-04-29 16:00:28

回答

2

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

相关问题