Add status icons over file icons in Explorer, like Dropbox or SVN in .NET

前端 未结 3 1225
闹比i
闹比i 2020-12-24 15:24

I\'m writing a Windows service application in C# with FileSystemWatcher.

How can I add status icons to files and folders in Windows Explorer similar to

相关标签:
3条回答
  • 2020-12-24 16:06

    You should develop an overlay icon handler and register it into the system.
    Here you can find a partially working example written in C#.
    Some MSDN documentation here and here.

    0 讨论(0)
  • 2020-12-24 16:12

    For anyone still interessted in this question:

    Here is a codeproject link which describes the process in great detail.

    It uses the SharpShell library, which can also be found on nuget.

    Code, from the codeproject, looks something like that:

    [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;
      }
    }
    
    0 讨论(0)
  • 2020-12-24 16:15

    I've never play with this, but I think it's the right way.

    Custom Folder

    First make the folder a System Folder, then create a Desktop.ini file and apply the change inside.

    [.ShellClassInfo]
    InfoTip=@Shell32.dll,-12690
    IconFile=%SystemRoot%\system32\SHELL32.dll
    IconIndex=-238  
    
    0 讨论(0)
提交回复
热议问题