none
如何获取Windows系统桌面图标的呈现名 RRS feed

  • 问题

  • 在WINDOWS的“桌面图标设置”窗口中有5个系统桌面图标(计算机、回收站、用户文件、控制面板、网络),我通过搜索注册表发现“HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\CLSID”下有这5个图标的呈现名,但仅限于用户对图标进行重命名后才可以获取(如将计算机图标重命名为“adsfsfs”),如果未进行重命名,该键值为“数值未设置”。显然这个方法行不通。请问如何准确获取这5个图标的呈现名?
    • 已编辑 章鱼 2009年3月6日 3:59
    • 已移动 Sheng Jiang 蒋晟Moderator 2009年3月13日 19:34 WIndows外壳开发问题 (从 Visual C# 移动到 Windows Vista 开发相关讨论)
    • 已移动 孟宪会Moderator 2009年5月19日 9:38 ([Loc]From:Windows Vista 开发相关讨论)
    2009年3月6日 3:38

答案

  • 这里需要引用一个com
    shell32.dll

    以下为枚举桌面成员的vb6代码  可以作为参考


    Private Sub Form_Load()
           Dim obj As New Shell32.Shell
           Dim f As Folder
           Set f = obj.NameSpace(Shell32.ShellSpecialFolderConstants.ssfDESKTOP)
           Dim itm As Shell32.FolderItem
           For Each itm In f.Items
                  MsgBox itm.Name
           Next

    end  sub




     

    End Sub


    就算首页不能显示30天内排行榜 回答总数也快接近top10了 5555
    努力奋斗 重回首页排行榜!!! 55555
    有原则的回答问题: 不懂的不去装懂,别人回答得很完整的,没有需要补充的不去蹭分。
    • 已标记为答案 章鱼 2009年3月6日 9:05
    2009年3月6日 5:05

全部回复

  • 另外,我获取了这5个图标的PIDL,如何判断该PIDL是哪个图标?
    2009年3月6日 3:57
  • 这里需要引用一个com
    shell32.dll

    以下为枚举桌面成员的vb6代码  可以作为参考


    Private Sub Form_Load()
           Dim obj As New Shell32.Shell
           Dim f As Folder
           Set f = obj.NameSpace(Shell32.ShellSpecialFolderConstants.ssfDESKTOP)
           Dim itm As Shell32.FolderItem
           For Each itm In f.Items
                  MsgBox itm.Name
           Next

    end  sub




     

    End Sub


    就算首页不能显示30天内排行榜 回答总数也快接近top10了 5555
    努力奋斗 重回首页排行榜!!! 55555
    有原则的回答问题: 不懂的不去装懂,别人回答得很完整的,没有需要补充的不去蹭分。
    • 已标记为答案 章鱼 2009年3月6日 9:05
    2009年3月6日 5:05
  • 韦恩卑鄙 说:

    这里需要引用一个com
    shell32.dll

    以下为枚举桌面成员的vb6代码  可以作为参考


    Private Sub Form_Load()
           Dim obj As New Shell32.Shell
           Dim f As Folder
           Set f = obj.NameSpace(Shell32.ShellSpecialFolderConstants.ssfDESKTOP)
           Dim itm As Shell32.FolderItem
           For Each itm In f.Items
                  MsgBox itm.Name
           Next

    end  sub




     

    End Sub


    就算首页不能显示30天内排行榜 回答总数也快接近top10了 5555
    努力奋斗 重回首页排行榜!!! 55555
    有原则的回答问题: 不懂的不去装懂,别人回答得很完整的,没有需要补充的不去蹭分。



    有没有C#的代码呢?
    2009年3月6日 6:32
  • 去Google Code Search找找C#代码。不过网上也有VB转C#的翻译工具下载。
    MSMVP VC++
    2009年3月15日 21:57
    版主