如何在XP中更改文件关联后刷新图标?

时间:2012-02-28 01:55:23

标签: visual-studio-2008 winapi visual-c++ windows-xp windows-shell

我试图在XP中更改.htm文件的文件关联,这就是我的做法:

  1. 更改关联的注册表项值。
  2. 致电SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, 0, 0)刷新图标。
  3. 执行这些操作后,我双击.htm文件,然后由我预期的浏览器打开。但桌面上的图标不会更改为新图标(例如从IE到Chrome)。 但是,如果我重新启动explorer.exe,图标将更改为正确的图标。

    有人可以告诉我如何在更改文件关联后刷新桌面上的图标吗?

    您的任何回复都将不胜感激,谢谢。

2 个答案:

答案 0 :(得分:1)

尝试:

  

SHChangeNotify,SHCNE_GLOBALEVENTS,SHCNF_IDLIST或SHCNF_FLUSHNOWAIT   或SHCNF_NOTIFYRECURSIVE,0,0

将OR更改为您所用语言中的任何OR对我有用。

或更改

  

SHCNE_GLOBALEVENTS到SHCNE_ASSOCCHANGED

答案 1 :(得分:0)

尝试发送有关已更改环境的通知,这可能会解决:

DWORD result2 = 0;
LRESULT result = SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE, 0,
    (LPARAM)_T("Environment"), SMTO_ABORTIFHUNG, 5000, &result2);