Господа, помогите разобраться, почему не хочет работать SSF_SHOWSUPERHIDDEN на Скрытие/Показ защищенных системных файлов. При этом, функция, которая определяет состояние файлов, работает корректно.
| Код | // Скрыть/показать защищенные файлы (ЭТОТ КОД НЕ РАБОТАЕТ!) procedure SHShowSuperHiddenFile(show: Boolean); var lpss: SHELLSTATE; bShowAll: Boolean; begin ZeroMemory(@lpss, sizeof(lpss)); // Получаем текущее состояние SHGetSetSettings(lpss, SSF_SHOWSUPERHIDDEN, False); // Проверяем текущее состояние bShowAll := (lpss.Data and SSF_SHOWSUPERHIDDEN) = SSF_SHOWSUPERHIDDEN; // Если изменилось if (bShowAll <> show) then begin if (Show) then lpss.Data := 1 else lpss.Data :=0; // Меняем состояние SHGetSetSettings(lpss, SSF_SHOWSUPERHIDDEN, True); // Сообщение Проводнику об изменениях SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_FLUSHNOWAIT, nil, nil); end; end; // Определяем, скрыты или нет защищенные файлы function ShGetShowSuperHiddenFileState:boolean; var lpss: SHELLSTATE; begin ZeroMemory(@lpss, sizeof(lpss)); // Получаем текущее состояние SHGetSetSettings(lpss, SSF_SHOWSUPERHIDDEN, False); // Возвращаем состояние result:= (lpss.Data and SSF_SHOWSUPERHIDDEN) = SSF_SHOWSUPERHIDDEN; end; // Скрываем/Показываем защищенные файлы procedure TForm1.Button1Click(Sender: TObject); begin if ShGetShowSuperHiddenFileState then SHShowSuperHiddenFile(false) else SHShowSuperHiddenFile(true); end;
|
|