使Windows刷新图标缓存

2023-11-24

我真的很喜欢 KDE SC 4 的氧气外观。我编写了一个程序将这些图标应用到 Windows。该程序是用 NSIS 编写的,目前几乎功能齐全。但是,我发现让 Windows 意识到图标更改的唯一方法是终止 explorer.exe,删除图标缓存,然后重新生成 explorer.exe。SHChangeNotify with SHCNE_ASSOCCHANGED似乎无法让 Windows 意识到控制面板图标、我的电脑图标等的更改。请建议一种更好、不那么残酷的方法来让 Windows 意识到这些更改。

EDIT:我发现一个名为 Icon Tweaker 的程序似乎能够做到这一点,但它是闭源的,所以我不知道它是如何做到这一点的。 (图标调整器:http://www.crystalxp.net/galerie/en.id.83-icontweaker.html)

EDIT:感谢安德斯的回复(见下文),我的工作正常。不过,我只是将我的工作 NSIS 代码放在这里,以防其他人需要它

ReadRegStr $0 HKCU "Control Panel\Desktop\WindowMetrics" "Shell Icon Size"
IntOp $0 $0 + 1
WriteRegStr HKCU "Control Panel\Desktop\WindowMetrics" "Shell Icon Size" $0
SendMessage 0xffff 0x001A 42 0 /TIMEOUT=100000
IntOp $0 $0 - 1
WriteRegStr HKCU "Control Panel\Desktop\WindowMetrics" "Shell Icon Size" $0
SendMessage 0xffff 0x001A 42 0 /TIMEOUT=100000

$0寄存器用于存储Shell Icon Size的价值HKEY_CURRENT_USER\Control Panel\Desktop\WindowMetrics。然后我们增加该值并执行SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE, SPI_SETNONCLIENTMETRICS, 0, SMTO_ABORTIFHUNG, 100000, NULL),然后递减并重新发送。

EDIT:作为奖励,这可以用作在 Windows XP 上获得更大(Windows 7 大小)桌面图标的技巧。只需加倍Shell Icon Size价值与召唤SendMessage(不要执行恢复大小的第二次更改)


您只需运行以下命令行即可:

c:\Windows\System32\ie4uinit.exe -ClearIconCache

该命令行将删除您的缓存图标,无需重新启动资源管理器

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使Windows刷新图标缓存 的相关文章

  • 在 wampserver 2.2 上安装 php_imagick.dll PHP 扩展

    我使用的是 32 位操作系统的 Windows 7 我安装了 ImageMagick 6 8 7 Q16Link https www imagemagick org script download php windows我能够从命令行 转换
  • 为 Windows 98 编译 Qt

    我需要支持 Windows 98 Qt 文档声称这是可能的 但没有说明 Qt 4 6 的分布式二进制文件不能在 Win98 上运行 而且我采样的大多数 Qt 应用程序也不能在 Win98 上运行 对于几个确实在 98 上运行的应用程序 我询
  • dia2dump:CoCreateInstance 失败 - HRESULT = 80040154

    我正在尝试使用 Visual Studio 2017 及其在 Windows 7 x64 上转储 PDB 的签名dia2dump https msdn microsoft com en us library b5ke49f5 aspx 我加
  • 如何在子 shell 中运行 cmd.exe 批处理文件

    我有一个批处理文件 通常像这样调用 longjob cmd gt result txt 2 gt 1 这工作正常 但脚本在执行过程中更改了目录 将我的 shell 留在该目录中 这很麻烦 有没有办法在子 shell 中运行命令 同时仍然允许
  • 使用taskkill停止Windows服务

    我需要帮助来使用 C 终止 Windows 服务 现在要终止该服务 请使用以下选项 从命令 sc queryex ServiceName 发现后PID服务的 taskkill pid 1234 exemple f 为了便于阅读 但如果您明白
  • opencv人脸检测示例

    当我在设备上运行应用程序时 应用程序崩溃并显示以下按摩 java lang UnsatisfiedLinkError 无法加载 detector based tracker findLibrary 返回 null 我正在使用 OpenCV
  • 使用 Windows 批处理文件在文本文件中添加新行

    我有一个文本文件 其中有 200 多行 我只想在第 4 行之前添加一个新行 我使用的是 Windows XP 输入前的示例文本文件 header 1 header 2 header 3 details 1 details 2 输出后 hea
  • 如何在Windows 8上正确使用SCardGetStatusChange?

    智能卡服务在 Windows 8 上的行为有所不同 并且 MSDN 尚未更新其文档 任何人都可以提供有关如何正确调用 SCardGetStatusChange 来监视 Windows 8 上的智能卡操作的代码片段吗 提前致谢 这是我为个人博
  • 如何通过命令行将Flash .fla编译为.swf? [复制]

    这个问题在这里已经有答案了 如何在基于 Windows 的操作系统上通过命令行将 Flash fla 文件编译为 swf 需要安装的命令行工具就可以了 谁能建议我该怎么做 以直接的方式 谢谢 您可以使用JSFL为 Flash IDE 编写脚
  • 如何使用 NSIS 脚本检测 Windows 32 位或 64 位?

    我已经为java项目编写了nsis脚本 我的项目中有批处理文件 我已经为常见的Windows 32位和64位编写了批处理文件 安装后我已经使用自动启动批处理文件Exec命令 它在 32 位 Windows 中工作正常 但同时这在 64 位
  • VB - 以隐式方式链接 DLL

    我正在开发 VB6 图形界面 并且需要隐式链接到 DLL 这样做的动机来自于我上一个问题 https stackoverflow com questions 5194573 有问题的 DLL 使用静态 TLS declspec thread
  • 防止 WNetAddConnection2 类允许被禁止的用户访问共享文件夹

    我开发了 C windows 应用程序 操作系统是Windows 7 要求 是使用带有凭据的代码访问网络共享文件夹 Test WNetAddConnection2 class 限制 是某些用户可以访问此共享文件夹 测试 但对于其他用户 设置
  • 如何设置任务在使用 vbs 登录时以当前用户身份运行而无需管理员权限?

    从命令行 我可以创建一个在登录时运行的计划任务 无需管理员权限或用户输入密码来设置任务 但是我必须使用 xml 文件来执行此操作 下面是一个示例 xml 其中 Domain User 部分必须在运行时替换为当前用户的域和名称
  • Windows批处理文件:将结构转换为单行字符串

    我需要将这个艰巨的任务作为批处理文件来完成 这对于 C 来说不是最困难的 但在 DOS 中是一个地狱 至少对我来说 我需要将结构转换为单个 var 字符串 才能在我的程序中再次将它们转换为该结构 别担心回归 一切都已经完成了 该结构的大小会
  • 使用 sed 更新 xml 属性(Windows + cygwin 和 Linux)?

    我需要使用 sed 命令对 xml 文件进行更新 但我在这方面遇到了麻烦 它需要在 Windows 使用 cygwin 和 Linux 上运行 XML 具有以下元素
  • 将目录压缩为单个文件的方法有哪些

    不知道怎么问 所以我会解释一下情况 我需要存储一些压缩文件 最初的想法是创建一个文件夹并存储所需数量的压缩文件 并创建一个文件来保存有关每个压缩文件的数据 但是 我不被允许创建许多文件 只能有一个 我决定创建一个压缩文件 其中包含有关进一步
  • Windows 上的 boot2docker 缺少 apt-get / 包管理器

    我在 boot2docker 中 我不确定我完全理解它 但它似乎是我正在进行的项目所需要的 我已经通过 ssh 登录了 并且尝试对我们的项目进行 make 但是我得到了 make not found 然后我尝试了一个 apt get ins
  • 如何在Windows中的Python 3.9下pip安装pickle?

    我需要pickle https docs python org 3 9 library pickle html module pickle包安装在我的下面Python 3 9在 Windows 10 下 我尝试过的 当尝试与pip inst
  • 如何捕获未发送到 stdout 的命令行文本?

    我在项目中使用 LAME 命令行 mp3 编码器 我希望能够看到某人正在使用什么版本 如果我只执行 LAME exe 而不带参数 我会得到 例如 C LAME gt LAME exe LAME 32 bits version 3 98 2
  • 材质设计图标颜色

    应该是哪种颜色 暗 材质图标 在官方文档上 https www google com design spec style icons html icons system icons https www google com design s

随机推荐

  • FPDF 如何强制分页

    我正在使用 FPDF 1 7 将 TXT 文件转换为 PDF 我想在 PDF 产品中强制分页 使用 php 创建文本文件 并成功使用回车符 r 但我无法让换页符 f 出现在 PDF 中 是否有另一种方法可以通过更改原始文本文件或 php 代
  • 致命错误:无法重新声明类数据库

    我收到胎儿错误消息 致命错误 无法在第 3 行的 C wamp www pets new lib database php 中重新声明类数据库 require once lib message php require once lib us
  • 如何找到对象的键?

    我知道在 JavaScript 中 objects作为哈希值的两倍 但我一直无法找到内置函数来获取密钥 var h a b c d 我想要类似的东西 var k h keys k a c 自己编写一个函数来迭代项目并将键添加到我返回的数组中
  • 在 pandas 情节图例中显示非 ASCII(日语)字符

    如果我这样做 import pandas as pd pd DataFrame data nr random 2 2 columns u u 日本 plot Result So 显示 但不显示日本 经过一番谷歌搜索后 我发现了这个page这
  • 在 C# 中渲染图形

    除了 C 之外还有其他渲染图形的方法吗GDI and XNA 用于开发瓦片地图编辑器 SDL NET这是我喜欢的解决方案 如果您需要在其之上进行 3D 您可以使用Tao OpenGL 在其内部进行渲染 速度快 符合行业标准 SDL 即 并且
  • 在 Python 中接受 Cookie

    如何在 python 脚本中接受 cookie 尝试这个 import urllib2 import cookielib jar cookielib FileCookieJar cookies opener urllib2 build op
  • 从另一个 WPF 应用程序加载 WPF 应用程序程序集,出现错误:无法在同一 AppDomain 中创建多个 System.Windows.Application 实例

    场景 启动程序 WPF应用程序 gt gt Build 32bit Net 4 5 1 location D 加载程序 另一个 WPF 应用程序 gt gt Build 32bit Net 4 5 1 location D I m owne
  • SQL-将列中的值相加

    如何将 SQL 列中的值相加 我在 xampp 中设置了表格 并尝试将标题为 gross 的列中的所有值相加 SQL Server 或 MySQL select sum MyColumn as MyColumnSum from MyTabl
  • 为什么父元素不包含边距?

    当具有边距的元素包含在另一个元素中时 父元素不会始终包裹 包含该边距 很多事情都会导致父级包含子级的边距 border solid position absolute display inline block overflow auto 这
  • 如何使用下载的示例代码启动 Android 项目

    我对 android 还很陌生 刚刚完成环境设置并阅读了一些教程 然后我从网上获取了sdk示例 好的 我想问您的是 有没有办法在 Eclipse 中将示例作为项目启动 我的意思是单击 C 中的项目文件或解决方案文件 这是我解压代码的文件夹
  • SQL Server 2019 Express 安装失败,因为找不到 2017 驱动程序?

    我安装了SQL Server 2019的基本配置 最后报错 Oops 无法安装 SQL Server setup exe 退出代码 十进制 2068052310 错误描述 Microsoft 产品的安装包 找不到 SQL Server 的
  • 导致 INSERT 失败的触发器?可能的?

    在清理中这个答案我学到了一些关于TRIGGERMySQL 中的 s 和存储过程 但令人惊讶的是 虽然BEFORE INSERT and BEFORE UPDATE触发器可以修改数据 它们似乎不会导致插入 更新失败 即验证 在这种特殊情况下
  • 在 Django 1.5 中使用多个 AUTH_USER_MODEL 的正确方法是什么?

    我想为 django contrib auth 模块使用两种不同的模型 第一个是 Django 提供的默认用户模型 它完全适合管理员访问 组 权限等 但另一个是客户模型 与其他模型相比 它具有许多不同的属性 城市 区域设置 地址等 默认用户
  • 用于发布的构建后事件命令 (Visual Studio 2010)

    我在 Visual Studio 2010 中有一个项目 该项目具有以下构建后事件命令行 SET TARGET PROJECT TestMain IF NOT EXIST TargetDir IceBox XCOPY E I Y Solut
  • Android中如何翻转ImageView?

    我正在开发一个需要翻转的应用程序ImageView触摸并将控制权转移到第二个活动 请帮我 我尝试了很多 但没有成功 谢谢大家 这是一个很好的翻转图像库 https github com castorflex FlipImageView
  • 在react-admin中拥有多个dataProvider的正确方法是怎样的?

    我试图在反应管理项目中使用多个数据提供程序 但出现错误 Warning Missing translation for key dataProvider is not a function function console anonymou
  • 可以在 app.config 中为 .NET 命名空间添加别名吗?

    ASP NET 有一个功能 允许您在 web config 中声明隐式使用的命名空间
  • ruby 中将二进制数据转换为字符串

    我有一个包含字节数据的字符串 如何执行到 ascii 字符串的就地转换 处理二进制数据的另一种方法是字符串 unpack
  • Python 中的新运算符

    我们可以定义Python的内在运算符 如下所示here 只是出于好奇 我们可以定义新的运算符吗 or 如果是这样 那么我们可以定义三元条件运算符或旋转运算符 正如 minitech 所说 你无法定义新的运算符 但是检查一下这个允许你定义中缀
  • 使Windows刷新图标缓存

    我真的很喜欢 KDE SC 4 的氧气外观 我编写了一个程序将这些图标应用到 Windows 该程序是用 NSIS 编写的 目前几乎功能齐全 但是 我发现让 Windows 意识到图标更改的唯一方法是终止 explorer exe 删除图标