Windows API 中是否有一个功能可以在 Windows 资源管理器中切换“显示隐藏的文件、文件夹和驱动器”选项(工具>>文件夹选项...>>查看选项卡)。
我知道一个相关的注册表项,但更改它不会立即生效。关键是:HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Explorer/Advanced/Hidden
尝试从 C# 执行此操作,但问题不是特定于语言的。
Windows API 中是否有一个功能可以在 Windows 资源管理器中切换“显示隐藏的文件、文件夹和驱动器”选项(工具>>文件夹选项...>>查看选项卡)。
我知道一个相关的注册表项,但更改它不会立即生效。关键是:HKEY_LOCAL_MACHINE/SOFTWARE/Microsoft/Windows/CurrentVersion/Explorer/Advanced/Hidden
尝试从 C# 执行此操作,但问题不是特定于语言的。
您可以尝试此线程中的 OP建议的选项,即:
任何一个
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
编辑:格式化
除了我在原始问题中添加的评论之外——例如,如果你这样做是为了让你即将弹出的 OpenFileDialog 显示这些文件——不要这样做。
在这种情况下,您最好 P/Invoking GetOpenFileName ,并在OpenFileName结构的标志中设置适当的选项(OFN_FORCESHOWHIDDEN(参见相关主题的枚举)。
这样你只会在适当的时候影响你的应用程序
SHELLSTATE 结构 fShowAllObjects BOOL TRUE 显示所有对象,包括隐藏文件和文件夹。FALSE 隐藏隐藏的文件和文件夹。
fShowSysFiles BOOL TRUE 显示系统文件,FALSE 隐藏它们。
Spy++ 说 WM_SETTINGCHANGE 被发送到资源管理器窗口。
我知道没有 API,但注册表项是HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced\Hidden
. 从实验来看,似乎值为 1 表示显示,值为 2 表示隐藏。