Добавьте значки состояния поверх значков файлов в проводнике, например Dropbox или SVN в .NET - PullRequest
13 голосов
/ 05 декабря 2011

Я пишу приложение службы Windows на C # с помощью FileSystemWatcher.

Как добавить значки состояния в файлы и папки в проводнике Windows, аналогично тому, как это делают Dropbox или SVN?

Ответы [ 3 ]

15 голосов
/ 05 декабря 2011

Вы должны разработать обработчик значка наложения и зарегистрировать его в системе.
Здесь вы можете найти частично рабочий пример, написанный на C #.
Некоторая документация MSDN здесь и здесь .

2 голосов
/ 05 декабря 2011

Я никогда не играл с этим, но я думаю, что это правильный путь.

Пользовательская папка

Сначала сделайте папку системной папкой, затем создайте файл Desktop.ini и примените изменения внутри.

[.ShellClassInfo]
InfoTip=@Shell32.dll,-12690
IconFile=%SystemRoot%\system32\SHELL32.dll
IconIndex=-238  
1 голос
/ 27 марта 2018

Для всех, кто еще заинтересован в этом вопросе:

Здесь - ссылка на кодпроект, который описывает процесс более подробно.

Используется библиотека SharpShell , которую также можно найти в nuget.

Код из проекта кода выглядит примерно так:

[ComVisible(true)]
public class ReadOnlyFileIconOverlayHandler : SharpIconOverlayHandler
{
  protected override int GetPriority()
  {
    //  The read only icon overlay is very low priority.
    return 90;
  }

  protected override bool CanShowOverlay(string path, FILE_ATTRIBUTE attributes)
  {
    try
    {
      //  Get the file attributes.
      var fileAttributes = new FileInfo(path);

      //  Return true if the file is read only, meaning we'll show the overlay.
      return fileAttributes.IsReadOnly;
    }
    catch (Exception) { return false; }
  }

  protected override System.Drawing.Icon GetOverlayIcon()
  {
    //  Return the read only icon.
    return Properties.Resources.ReadOnly;
  }
}
...