WinApi SetFileAttributes медленный вызов - PullRequest
0 голосов
/ 28 ноября 2018

Сегодня я провел некоторое тестирование с помощью метода 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 голосов
/ 29 ноября 2018

Прежде всего: спасибо за ваши предложения.Вы были правы, вид обозревателя / рабочий стол обновляется только после того времени, о котором я упоминал.

Мне удалось решить проблему замедленного движения с помощью вызова winapi SHChangeNotify.Важно объединить часть uFlags с SHCNF_FLUSH, тогда изменение будет видно сразу.

...