WinApi SetFileAttributes慢动作调用

时间:2018-11-28 13:25:34

标签: c windows winapi icons

今天,我使用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调用花费那么多时间?有没有优化通话的方法?

谢谢。

1 个答案:

答案 0 :(得分:0)

首先:感谢您的建议。您说得对,资源管理器视图/桌面仅在我提到之后才更新。

通过使用winapi调用SHChangeNotify,我能够解决慢动作问题。将uFlags部分与SHCNF_FLUSH结合使用非常重要,这样更改立即可见。