API для переключения «Показать скрытые файлы, папки и диски» - PullRequest
6 голосов
/ 25 марта 2010

Есть ли в Windows API функция для переключения опции «Показывать скрытые файлы, папки и диски» в проводнике Windows (Инструменты >> Параметры папки ... >> Показать вкладку).

Я знаю о связанном разделе реестра, но изменение, которое не будет иметь немедленного эффекта. Ключ: HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Explorer/Advanced/Hidden

Попытка сделать это из C #, но вопрос не зависит от языка.

Ответы [ 4 ]

4 голосов
/ 25 марта 2010

Вы можете попробовать параметры, которые ОП в предлагает эта ветка , то есть:

Или

 SendNotifyMessage(HWND_BROADCAST, WM_SETTINGCHANGE, 0, 0);

или

 RefreshPolicyEx(False, RP_FORCE);

или

 SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE, 0, integer(pchar('Policy')), SMTO_NORMAL or SMTO_ABORTIFHUNG, 5000, c1);

Их нет в .NET C # API, поэтому вам придется использовать DllImport

Редактировать: форматирование

2 голосов
/ 25 марта 2010

В дополнение к комментарию, который я добавил к исходному вопросу - если вы делаете это так, например, чтобы OpenFileDialog, который вы собираетесь открыть, показывает эти файлы - не делайте этого.

В этом случае вам лучше P / Invoking GetOpenFileName и установка соответствующей опции (OFN_FORCESHOWHIDDEN (см. enum для связанной темы) в флагах OpenFileName структура.

Таким образом, вы воздействуете только на ваше приложение, в соответствующее время

1 голос
/ 03 апреля 2010

SHGetSetSettings

Структура SHELLSTATE fShowAllObjects BOOL TRUE, чтобы показать все объекты, включая скрытые файлы и папки. ЛОЖЬ, чтобы скрыть скрытые файлы и папки.

fShowSysFiles BOOL TRUE для отображения системных файлов, FALSE для их скрытия.

Spy ++ сообщает, что WM_SETTINGCHANGE отправляется в окна проводника.

0 голосов
/ 25 марта 2010

Я не знаю API, но ключ реестра - HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Hidden. Из экспериментов видно, что значение 1 означает «показать», а значение 2 означает «скрыть».

...