2013-04-29 72 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兼容語言可以訪問它)。

相關問題