如何创建图标叠加?

时间:2016-04-12 06:17:07

标签: vb.net

我尝试了这个方法:http://www.codeproject.com/Articles/545781/NET-Shell-Extensions-Shell-Icon-Overlay-Handlers

Option Strict On
Option Explicit On
Imports System.Runtime.InteropServices
Imports SharpShell.Interop
<ComVisible(True)>
Public Class IconOverlayYeah : Inherits SharpShell.SharpIconOverlayHandler.SharpIconOverlayHandler

    Protected Overrides Function CanShowOverlay(path As String, attributes As FILE_ATTRIBUTE) As Boolean
        Return True
    End Function


    Protected Overrides Function GetOverlayIcon() As System.Drawing.Icon
        Return New System.Drawing.Icon("C:\Users\user\Desktop\icon.ico")
    End Function


    Protected Overrides Function GetPriority() As Integer
        Return 90
    End Function
End Class

使用regasm.exe注册生成的dll(使用regedit.exe可见)但不幸的是我的图标不会显示在资源管理器或任何地方。我只注册了6个叠加层并尝试了很多通过谷歌找到的解决方法。但我无法让它发挥作用。你能帮我吗?

1 个答案:

答案 0 :(得分:0)

regasm.exe只会注册程序集。但根据How to Register Icon Overlay Handlers

  

除了正常的组件对象模型(COM)注册外,还有以下内容   必须完成步骤才能注册图标叠加处理程序。   步骤1:在此键下创建一个以处理程序命名的子键
  HKEY_LOCAL_MACHINE
     软件
       微软
           视窗
             CURRENTVERSION
                资源管理器
                   ShellIconOverlayIdentifiers
  步骤2:将子项的默认值设置为对象的字符串形式&gt;类标识符(CLSID)GUID

您可以使用SharpShell中的srm.exe或ServerManager.exe(您可以从here下载这些内容。

此外,请在注册图标叠加处理程序后尝试重新启动资源管理器。

希望这有帮助。