RT,在注册表中更改完相应的键值之后,双击桌面上的某类文件(如.htm)时已经能用特定的程序打开(如Chrome),但是桌面上.htm文件的图标依然是ie的图标而非Chrome的。    我试过使用SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, NULL, NULL);和SendMessage(HWND_BROADCAST,  WM_SETTINGCHANGE, SPI_SETNONCLIENTMETRICS,NULL);但是都不管用,可如果我重启explorer的话,图标能够刷新过来。    请问有什么方法能及时把桌面上的图标缓存给刷新过来么,谢啦。

解决方案 »

  1.   

    可以参考一下:
    http://louissgd.blogbus.com/logs/48685499.html
      

  2.   


    ////////////////////// 
    //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);
      

  3.   

    http://gggg