c - 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 调用花费了这么多时间呢?有没有办法优化通话?
谢谢。
解决方案
首先:感谢您的建议。你是对的,资源管理器视图/桌面只有在我提到之后才会更新。
我能够通过使用 winapi 调用 SHChangeNotify 来解决慢动作问题。将 uFlags 部分与 SHCNF_FLUSH 结合起来很重要,这样更改就会立即可见。
推荐阅读
- solver - 如何使用 Dymola 为特定变量设置收敛容差?
- swift - 查询特定项目的最佳方法
- php - 将表格中的数字加起来,为当年的每个月
- c++ - 奇怪的快速失败堆栈错误,似乎取决于相同代码行的数量
- javascript - 一个字符反应后文本输入没有焦点?
- python - 张量流中辍学层的奇怪行为
- django - 使用电话号码注册 Django
- php - 无法加载 PHP 扩展
- c# - 编译时,Lambda 表达式树总是添加 System.Runtime.CompilerServices.Closure
- slack - Slack API:能够查看所有最近添加到 Slack 频道的用户