相关疑难解决方法(0)

在Win7中刷新Windows资源管理器

我的计划设定"HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced"价值"Hidden".Hovewer我无法刷新资源管理器以考虑此更改.我试过了:

1)

    SHChangeNotify(SHCNE_ASSOCCHANGED, SHCNF_IDLIST, IntPtr.Zero, IntPtr.Zero);` 
Run Code Online (Sandbox Code Playgroud)

2)

    SHELLSTATE state = new SHELLSTATE(); 
    state.fShowAllObjects = (uint)1; 
    SHGetSetSettings(ref state, SSF.SSF_SHOWALLOBJECTS, true); 
Run Code Online (Sandbox Code Playgroud)

3)

    SendMessageTimeout(HWND_BROADCAST, WM_SETTINGCHANGE, SPI_SETNONCLIENTMETRICS, 0, SMTO_ABORTIFHUNG, 5000, ref dwResult); 
Run Code Online (Sandbox Code Playgroud)

4)

    SendMessage(HWND_BROADCAST, WM_COMMAND, 28931 /* Refresh */, 0); 
Run Code Online (Sandbox Code Playgroud)

什么都行不通.所以我该怎么做?如果我用F5自己刷新资源管理器,那么它可行.Hovewer我想要一些优雅的解决方案,所以它会在任何地方刷新显示,甚至在OpenFile/ SaveFile对话框中,这些都是当前打开的.

我正在使用C#.NET,Win7.

状态更新#1

正如所Anders指出的,有一种使用COM刷新资源管理器窗口的简单方法:

Guid CLSID_ShellApplication = new Guid("13709620-C279-11CE-A49E-444553540000");
Type shellApplicationType = Type.GetTypeFromCLSID(CLSID_ShellApplication, true);
dynamic shellApplication = Activator.CreateInstance(shellApplicationType);
dynamic windows = shellApplication.Windows();
for (int i = 0; i < windows.Count; i++)
    windows.Item(i).Refresh();
Run Code Online (Sandbox Code Playgroud)

所以这一部分已经完成.Hovewer我仍然需要刷新 …

.net c# windows windows-explorer windows-7

16
推荐指数
1
解决办法
7464
查看次数

如何从C#以编程方式(即F5)刷新Windows桌面?

是的,我知道这似乎是一个愚蠢的问题,它只是一次性的黑客,我需要完成一个有点平凡的任务,所以我可以继续前进更有趣的事情.

编辑:也许更多的信息会有所帮助:我正在尝试从桌面删除一些快捷方式,我需要用户立即看到它被删除(所以他们不必按F5).

.net c#

12
推荐指数
1
解决办法
1万
查看次数

使用C#立即生效注册表设置

我使用以下代码禁用控制面板:

RegistryKey RegKey = Registry.CurrentUser.CreateSubKey(
    @"Software\Microsoft\Windows\CurrentVersion\Policies\Explorer");
RegKey.SetValue("NoControlPanel", false, RegistryValueKind.DWord); 
RegKey.Close();
Run Code Online (Sandbox Code Playgroud)

以上代码仅在重新启动后禁用控制面板,我想立即应用该设置而不重新启动.请帮我.

c# controlpanel

2
推荐指数
1
解决办法
4849
查看次数

我找到了一些显示/隐藏桌面图标的代码,但是它在此过程中移动了图标。如何编辑代码以不移动图标?

我正在为Rainmeter使用两个批处理文件,一个用于隐藏所有图标,然后启动Rainmeter,另一个用于显示所有图标,然后退出Rainmeter以使我的桌面恢复正常。

我的最终目标是使这两个批处理文件成为任务栏上的按钮,单击这些按钮可以切换桌面的外观。

到目前为止,我只有两个批处理文件,但它们所做的只是显示和隐藏桌面图标。(我在网上找到了代码,因为我自己无法编写代码)

show.bat

REG ADD "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /V HideIcons /T REG_DWORD /D 0 /F
taskkill /f /im explorer.exe
start explorer.exe
Run Code Online (Sandbox Code Playgroud)

hide.bat

REG ADD "HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced" /V HideIcons /T REG_DWORD /D 1 /F
taskkill /f /im explorer.exe
start explorer.exe
Run Code Online (Sandbox Code Playgroud)

因此,我发现的代码可以正常工作,但比手动隐藏桌面图标要流畅得多……唯一的问题是,当我运行show.bat时,我的图标又回到了我不希望它们进入的位置。

如何使批处理文件更顺畅地显示/隐藏图标,以及如何不使图标四处移动?

PS:只是想强调一下,我真的不知道我发现的代码是如何工作的,因此您可能必须使用ELI5。

desktop icons batch-file

0
推荐指数
1
解决办法
3905
查看次数