首页 > 解决方案 > WinApi SetFileAttributes 慢动作调用

问题描述

今天我用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-2s。如果我通过属性和复选框选择“隐藏”手动隐藏图标,则图标会立即隐藏。

那么,是什么让 winapi 调用花费了这么多时间呢?有没有办法优化通话?

谢谢。

标签: cwindowswinapiicons

解决方案


首先:感谢您的建议。你是对的,资源管理器视图/桌面只有在我提到之后才会更新。

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


推荐阅读