我的应用程序将创建一些文件夹,并且需要根据某些活动更改其图标。
我尝试使用下面的功能,似乎没有刷新文件夹
SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNE_ALLEVENTS | SHCNE_UPDATEIMAGE | SHCNE_UPDATEDIR |SHCNF_PATH | SHCNF_FLUSHNOWAIT, L"C:\\Music\\Test", 0);
如果我使用
SHChangeNotify(SHCNE_ASSOCCHANGED, 0x1000, 0,0);
,
整个桌面都得到了刷新。
请告诉我刷新文件夹的最佳方法。
答案 0 :(得分:1)
你可能使用了错误的功能。特别是,SHCNE_ASSOCCHANGED
的文档声明必须在SHCNF_IDLIST
参数中指定“uFlags
。dwItem1和dwItem2不使用且必须为NULL。”您没有传递SHCNF_IDLIST
,dwItem1
是路径字符串,而不是NULL
。此外,第二个参数应该只是SHCNF_*
个标志的组合;你正在添加无效的SHCNE_*
标志。
如果您要将文件写入L"C:\\Music\\Test"
,并希望资源管理器注意到这一点,请使用SHCNE_CREATE
;如果添加文件夹,请使用SHCNE_MKDIR
。在这两种情况下,dwItem1
必须是创建项目的路径,而不是创建项目的父文件夹。
答案 1 :(得分:0)
试试这个 SHChangeNotify(SHCNE_UPDATEDIR,SHCNF_PATH | SHCNF_FLUSHNOWAIT," Path",NULL); 在哪里"路径"是您要更新的文件夹。