问题标签 [shell-icons]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 获取 Shell 使用的文件图标
在 .Net(C# 或 VB:不关心)中,给定一个真实现有文件的文件路径字符串、FileInfo 结构或 FileSystemInfo 结构,我如何确定 shell(资源管理器)为此使用的图标文件?
我目前不打算将它用于任何事情,但是当我看到这个问题时,我对如何做到这一点感到好奇,我认为在 SO 上存档会很有用。
c# - 提取分配给文件的正确 16x16 图标?
我绑定了 SHGetFileInfo 和 ExtractIconEx,它们都返回一个普通的 32x32 图标和只有 16 种颜色的 16x16,它看起来很糟糕。如何提取全彩图标?
我的代码
c++ - 如何使用 SHGetFileInfo() 方法获取文件夹的打开图标?
这就是我所做的:
这就是问题所在:我发现我可以使用这种方法轻松获取文件夹的图标。SHGetFileInfo
但是当我将方法的第四个参数设置为时,我无法获得它的打开图标SHGFI_PIDL | SHGFI_OPENICON
。hIcon
ofFileInfo
总是,NULL
我不知道为什么。
谁能告诉我如何解决这个问题?
c# - 获取 Outlook 约会的文件图标 (.msg)
我已经阅读了 Shell 使用的 Get File Icon和其他类似的帖子——并且已经使用 SHFileInfo 来获取任何给定扩展名的关联图标,效果很好。
但是,Outlook 对邮件和约会项目使用“.msg”(如果您将电子邮件和事件拖到桌面上,则生成的图标会有所不同)。我注意到,如果我使用注册表方法,标准信封图标位于 C:\WINDOWS\Installer{90120000-0011-0000-0000-0000000FF1CE}\outicon.exe 的索引 17(在运行 Outlook 2007 的 XP 机器上) -而且,很方便,约会图标位于索引 18。我可以在提取图标时硬编码 18,但这听起来很脆弱。
给定电子邮件或约会的文件名(但不是实际文件),并且知道它是电子邮件或约会,是否有人知道如何通过外壳或注册表获得正确的图标?
当然,如果我手头有实际文件,我可以只使用 Icon.ExtractAssociatedIcon,但在我正在使用的系统中,我们显示了存储在其他地方的文件列表,并且事先下载每个文件是不可能的.
explorer - 无需重新启动资源管理器即可显示图标叠加
请帮助我如何在不重新启动 explorer.exe 的情况下显示图标覆盖?
我卡在这里的问题是我必须始终关闭 taskbarmanager 中的 explorer.exe 并重新打开它。我想要不需要像那样重启shell的方式。在 C++ 中有什么方法吗?
visual-studio - 如何在 Visual Studio 2010 中执行“shell”图标嵌入?
据我所知,有(至少?)三种类型的图标嵌入。有 shell32.dll 和朋友使用的原始样式,.NET 的嵌入,以及 WPF 使用的新类型。我正在寻找如何执行第一个,因为我希望有一些其他图标可用作跳转列表的资源,它只能接受那种风格。但是,我无法弄清楚如何嵌入这种风格,只有另外两种。
我该怎么做呢?我在谷歌等上找到的所有结果都是为了将图标添加到 ResX 文件或类似文件中。
java - 如何在java中获取linux文件夹和文件的图标和名称?
我正在用java创建一个文件夹和文件树。Windows 和 OSX 使用以下代码返回系统图标和名称:
是否有可能获得 unix 系统的图标和名称?系统命令也可以。
谢谢。
windows - 使 Windows 刷新图标缓存
我真的很喜欢 KDE SC 4 的氧气外观。我编写了一个程序来将这些图标应用于窗口。该程序是用 NSIS 编写的,目前几乎可以完全发挥作用。但是,我发现让 Windows 知道图标更改的唯一方法是杀死 explorer.exe,删除图标缓存,然后重新生成 explorer.exe。SHChangeNotify
withSHCNE_ASSOCCHANGED
似乎无法让 Windows 了解对控制面板图标、我的电脑图标等的更改。请建议一种更好、不那么残酷的方法来让 Windows 了解这些更改。
编辑:我发现一个名为 Icon Tweaker 的程序似乎能够做到这一点,但它是封闭源代码,所以我不知道它是如何做到的。(IconTweaker:http ://www.crystalxp.net/galerie/en.id.83-icontweaker.html )
编辑:感谢安德斯的回复(见下文),我的工作正常。但是,我将把我的工作 NSIS 代码放在这里,以防其他人需要它
$0 寄存器用于存储 的Shell Icon Size
值HKEY_CURRENT_USER\Control Panel\Desktop\WindowMetrics
。然后我们增加值并执行 a SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE, SPI_SETNONCLIENTMETRICS, 0, SMTO_ABORTIFHUNG, 100000, NULL)
,然后减少并重新发送。
编辑:作为奖励,这可以用作在 Windows XP 上获得更大(Windows 7 大小)桌面图标的技巧。只需将值加倍Shell Icon Size
并调用SendMessage
(不要执行恢复大小的第二次更改)
windows - Windows 图标覆盖 - 替代方案、改进和想法?
正如Cody Gray在这里回答我的另一个问题时提到的那样,Raymond Chen在这里谈到了图标叠加是一个糟糕的选择(请注意,这篇文章已经有一年了)。
反对叠加的实质性论点是一次只能显示一个……所以如果两个应用,哪一个会赢?似是而非的论点是只能有 15 个——在我看来,这是微软的设计选择,而不是反对其功效的论据。
随着文件拓扑的变化:
- 地点
- 管理
- 所有权
- 同步
- 复制
- ???
我相信文件和文件夹需要等效的存在指示器来立即识别它们的状态。
什么是图标覆盖的替代方案,它在文件/文件夹的状态上呈现相同的即时视觉队列?也许需要一个新的图标模型?
编辑:
2010-12-14
我对此思考得越多,我就越觉得只能有一个叠加层并且无法使叠加层一起工作的想法是荒谬的。
除非有技术原因,否则您不能拥有多个叠加层?
考虑(在我的脑海中):
- 您可以将图标分割成 4 个象限(左上、右上等) - 这将允许每个图标有 4 个叠加层。无需叠加层间适配。
- 您可以堆叠叠加层,并且只使用优先级来确定位置(z-order 任何人?)。允许用户访问用户空间优先级,因此用户(你知道,软件应该服务的人?)可以选择哪些覆盖很重要。系统覆盖具有最高优先级,而不是为覆盖保留位置。
c# - 如何调整 Windows 图标叠加层的大小?
我为我的文件制作了一个图标叠加层*.myfile
,但叠加层大小错误。当图标以 16x16 大小显示时,覆盖层会覆盖图标。
如何更改叠加层大小?( IShellIconOverlayIdentifier
)