今天,我使用SetFileAttributes方法进行了一些测试,遇到了我无法从逻辑上解释的现象:
我写了一个简短的C程序:
#include <stdio.h>
#include <windows.h>
int main()
{
char* strFile = L"C:\\test.txt";
if (SetFileAttributes(strFile, FILE_ATTRIBUTE_HIDDEN))
{
printf("File attribute changed.\n");
}
printf("%d", GetLastError());
}
这是一个隐藏文件夹或图标的测试程序,我想快速执行此操作,但是很遗憾,此过程需要1-2秒。 如果我通过属性和复选框选择“隐藏”手动隐藏图标,则该图标会立即隐藏。
那么,什么使winapi调用花费那么多时间?有没有优化通话的方法?
谢谢。
答案 0 :(得分:0)
首先:感谢您的建议。您说得对,资源管理器视图/桌面仅在我提到之后才更新。
通过使用winapi调用SHChangeNotify,我能够解决慢动作问题。将uFlags部分与SHCNF_FLUSH结合使用非常重要,这样更改立即可见。