如何在更改完文件关联之后刷新桌面图标缓存?

EricChan1986 2012-02-28 04:06:22
RT,在注册表中更改完相应的键值之后,双击桌面上的某类文件(如.htm)时已经能用特定的程序打开(如Chrome),但是桌面上.htm文件的图标依然是ie的图标而非Chrome的。

我试过使用SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, NULL, NULL);和SendMessage(HWND_BROADCAST, WM_SETTINGCHANGE, SPI_SETNONCLIENTMETRICS,NULL);但是都不管用,可如果我重启explorer的话,图标能够刷新过来。

请问有什么方法能及时把桌面上的图标缓存给刷新过来么,谢啦。
...全文
911 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
dukong123 2013-08-09
  • 打赏
  • 举报
回复
win7下还是无效啊
wzyff819 2012-05-28
  • 打赏
  • 举报
回复
EricChan1986 2012-02-28
  • 打赏
  • 举报
回复
3q,管用了!
SuperLy 2012-02-28
  • 打赏
  • 举报
回复

//////////////////////
//Rebuild Icon Cache//
//////////////////////
int Iconw=GetSystemMetrics(SM_CXICON);
HKEY hKey;
RegOpenKeyEx(HKEY_CURRENT_USER, "Control Panel\\Desktop\\WindowMetrics ",0,KEY_ALL_ACCESS,&hKey);
char buff[20];
itoa(Iconw-1,buff,10);
RegSetValueEx(hKey, "Shell Icon Size ",0,REG_SZ,(unsigned char *)buff,sizeof(buff));
SendMessage(HWND_BROADCAST,WM_WININICHANGE,0,0);
itoa(Iconw,buff,10);
RegSetValueEx(hKey, "Shell Icon Size ",0,REG_SZ,(unsigned char *)buff,sizeof(buff));
SendMessage(HWND_BROADCAST,WM_WININICHANGE,0,0);
EricChan1986 2012-02-28
  • 打赏
  • 举报
回复
这。。。我既然发到这里来当然是希望用vc实现。。。。
SuperLy 2012-02-28
  • 打赏
  • 举报
回复

16,472

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC相关问题讨论
社区管理员
  • 基础类社区
  • Web++
  • encoderlee
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

        VC/MFC社区版块或许是CSDN最“古老”的版块了,记忆之中,与CSDN的年龄几乎差不多。随着时间的推移,MFC技术渐渐的偏离了开发主流,若干年之后的今天,当我们面对着微软的这个经典之笔,内心充满着敬意,那些曾经的记忆,可以说代表着二十年前曾经的辉煌……
        向经典致敬,或许是老一代程序员内心里面难以释怀的感受。互联网大行其道的今天,我们期待着MFC技术能够恢复其曾经的辉煌,或许这个期待会永远成为一种“梦想”,或许一切皆有可能……
        我们希望这个版块可以很好的适配Web时代,期待更好的互联网技术能够使得MFC技术框架得以重现活力,……

试试用AI创作助手写篇文章吧