【问题标题】:Custom icon per file instance每个文件实例的自定义图标
【发布时间】:2009-03-25 14:24:02
【问题描述】:

一些 Windows 程序可以为具有相同扩展名的不同文件使用不同的图标。

例子

  • .sln 可以显示不同的图标,具体取决于解决方案的 Visual Studio 版本(实际上,由 .sln 顶行中的版本号决定)
  • Photoshop .psd 文件包含带有图像缩略图的图标
  • .url 快捷方式文件在 Internet Explorer 中打开或保存时具有页面的图标

我猜它一定是只为那台电脑定制的。在没有安装 Visual Studio 的机器上,.sln 文件只有默认的“我不知道这个程序”图标。注册表中有什么需要更改的吗?

我该怎么做?我希望可以选择将自定义图标与文件关联到我自己的程序。

[编辑] 我真的可以在托管代码中做到这一点。 可能 (\Samples\Technologies\Interop\Applications\ShellCmd) 但它似乎也有潜在危险,并且在实践中是错误的工作工具:http://social.msdn.microsoft.com/forums/en-US/netfxbcl/thread/1428326d-7950-42b4-ad94-8e962124043e/。我真的希望 MS 现在能够为这类东西提供一个很好的托管 API。

【问题讨论】:

    标签: windows icons


    【解决方案1】:

    查看C++ code on CodeProject:本质上,您编写了一个 COM 处理程序并将其注册到您的扩展中。请注意,如果您在图标处理程序或外壳扩展中泄漏资源,您可能会严重破坏资源管理器进程...... C++ 可能是一个挑战,但出于内存消耗的原因,我不建议在 C# 或 Java 中执行此操作(a每个扩展/处理程序的框架代码的单独副本!)。

    【讨论】:

    • 很好的链接和关于 .NET/Java 的良好警告。我以前从未用 C++ 编写过代码。除非我学习 C++,否则这是否超出了我的技能水平?
    • 你可以很容易地在 .NET 中实现 COM 接口,但是 Explorer 进程会变得臃肿。这取决于您想要实现的目标......但是小的内存占用对于插件来说是一个明确的优势!
    • 同时使用 C++ 和 COM 是相当繁重的编程:无论如何都不是不可能的,但很多事情都会让你绊倒,尤其是泄漏。
    • 但如果您是为了好玩,请务必尝试 .NET 解决方案。不过,我会考虑先在虚拟机上对其进行测试!
    猜你喜欢
    • 1970-01-01
    • 2012-09-23
    • 2011-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多