2013-04-29 2 views
1

Я хочу создать DeskBand, чтобы отобразить некоторую информацию на панели задач Windows, но я борюсь с реализацией функций, которые мне нужны на C++. Прошло около 10-15 лет с тех пор, как я коснулся C++. Я работаю полностью в .NET за последние 7 лет.Я хочу создать DeskBand. Должен ли я использовать C++?

Прежде чем вы это скажете - я знаю, что DeskBands устарели. Но предлагаемый элемент пользовательского интерфейса - панели инструментов миниатюр - не соответствуют моим потребностям. Мне нужен элемент пользовательского интерфейса, который постоянно виден для пользователя независимо от того, к какому приложению он переключается, а также предоставляет достаточное пространство для отображения строки текста - я мог бы проехать с местом для 30 символов или около того.

Я был в состоянии получить DeskBand от образца для Windows SDK для компиляции и запуска, но теперь мне нужно реализовать некоторые реальные функциональные возможности - в частности ...

  • Нахождение AppData \ Local папку (SHGetKnownFolderPath(FOLDERID_LocalAppData...)
  • Просмотр XML-файла для внесения изменений. Мне нужно разбирать и перерисовывать каждый раз, когда файл изменяется.
  • Синтаксический файл XML (я нашел pugixml)
  • Отображение некоторые данные из файла XML в моем DeskBand
  • Установка таймера перекрасить DeskBand один раз в минуту

... и я понимая, насколько мало я знаю о C++, и насколько я зависеть от библиотеки базового класса .NET. Эта задача была бы очень легкой для меня, если бы я писал ее на C#. Но я узнал в другом месте, что you shouldn't write shell extensions in .NET.

Какие у меня варианты? Есть ли более простой язык для этого - возможно, Python? Или мне нужно просто укусить пулю и сделать это на C++? Если да, то какие-либо рекомендации для разработчика .NET, пытающегося реализовать расширение оболочки WinAPI в C++?

Благодарим вас заблаговременно.

+0

Похоже, что некоторые из моих исследований были устаревшими. Теперь читаем о том, как .NET 4.0 меняет эту ситуацию ... –

+1

Не утруждайте себя попыткой с помощью .NET 4: [Теперь, когда версия 4 .NET Framework поддерживает одновременное время выполнения в процессе, теперь можно писать расширения оболочки в управляемом коде?] (http://blogs.msdn.com/b/oldnewthing/archive/2013/02/22/10396079.aspx). «Ответ по-прежнему нет». –

+0

Если производительность является единственной проблемой, я все равно могу продолжить путь .NET 4.0. Я думаю, что пятисекундная задержка является гораздо менее важной проблемой для загрузки DeskBand, чем для отображения контекстного меню. –

ответ

2

Расширения оболочки - это COM-объекты, а C++, как правило, лучший язык для разработки COM-объектов, поскольку COM был разработан в основном для C++, но это не единственный язык. COM имеет стандартную архитектуру, поэтому вы можете использовать любой язык вне .NET, который поддерживает разработку COM-объектов (Delphi, VB и т. Д.) Для разработки расширений оболочки (подобно тому, как Win32 API в основном предназначен для C, но любой C-совместимый язык может получить к нему доступ).