在资源管理器中的文件图标上添加状态图标,如Dropbox或.NET中的SVN

时间:2011-12-05 10:06:55

标签: c# .net windows icons overlay

我正在使用FileSystemWatcher在C#中编写Windows服务应用程序。

如何在Windows资源管理器中向文件和文件夹添加状态图标,类似于Dropbox或SVN的操作方式?

3 个答案:

答案 0 :(得分:15)

您应该开发一个叠加图标处理程序并将其注册到系统中 Here你可以找到用C#编写的部分工作示例 一些MSDN文档herehere

答案 1 :(得分:2)

我从来没有玩过这个,但我认为这是正确的方式。

Custom Folder

首先将文件夹设为系统文件夹,然后创建Desktop.ini文件并在其中应用更改。

[.ShellClassInfo]
InfoTip=@Shell32.dll,-12690
IconFile=%SystemRoot%\system32\SHELL32.dll
IconIndex=-238  

答案 2 :(得分:1)

对于仍然在这个问题上有兴趣的人:

Here是一个代码项目链接,它详细描述了该过程。

它使用SharpShell库,也可以在nuget上找到。

Codeproject中的代码看起来像这样:

[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;
  }
}