如何在不重新启动C#中的资源管理器的情况下应用Windows任务栏更改?

如何在不重新启动C#中的资源管理器的情况下应用Windows任务栏更改?,c#,windows,.net-core,registry,C#,Windows,.net Core,Registry,这是我当前的代码,它可以工作,但它会重新启动Explorer进程,这有点奇怪 使用系统; 使用系统诊断; 使用系统线程; 使用System.Threading.Tasks; 使用Microsoft.Win32; 名称空间MyApp { 班级计划 { 静态异步任务主(字符串[]args) { ShowSmallTaskbarIcons(); //showlagetaskbaricons(); Console.WriteLine(“按键退出…”); Console.ReadKey(); } 静态无效

这是我当前的代码,它可以工作,但它会重新启动Explorer进程,这有点奇怪

使用系统;
使用系统诊断;
使用系统线程;
使用System.Threading.Tasks;
使用Microsoft.Win32;
名称空间MyApp
{
班级计划
{
静态异步任务主(字符串[]args)
{
ShowSmallTaskbarIcons();
//showlagetaskbaricons();
Console.WriteLine(“按键退出…”);
Console.ReadKey();
}
静态无效显示SmallTaskBaricons()
{
Registry.SetValue(@“HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced”、“TaskbarSmallIcons”、“1”、RegistryValueKind.DWord);
RefreshExplorer();
}
静态无效显示LARGETASKBARICONS()
{
var key=Registry.CurrentUser.OpenSubKey(@“Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced”,可写:true);
key.DeleteValue(“TaskbarSmallIcons”,throwOnMissingValue:false);
key.Close();
RefreshExplorer();
}
静态空刷新资源管理器()
{
Process.Start(“taskkill.exe”,“/f/im explorer.exe”);
《睡眠》(2000年);
Process.Start(“explorer.exe”);
睡眠(10000);
}
}
}
我想做同样的“使用小任务栏按钮”切换开关从设置

如何使用C#?

此帖子有一个关于如何在C++中发送WMLSTATION更改消息的例子。 然而,在c#包装函数中没有简单的方法来实现这一点。您必须通过p/invoke来完成

下面的文章将帮助您在c中完成它#


我可以问一下为什么不需要重新启动windows资源管理器吗?让东西突然从屏幕上消失会有点令人不安。
它会重新启动资源管理器进程,这有点奇怪
你从来没有在帖子中描述过什么
有点奇怪
。你知道你自己正在终止任务,然后重新启动它,请解释你的代码当时在做什么。我想模仿Windows的做法,似乎有一种方法可以重新启动或应用任务栏更改。找到呈现任务栏的函数并仅使用这些函数。根据需要更改变量。是否有可用于SendMessageTimeout的所有LPRAM字符串的列表?是否应使用SendNotifyMessage()或SendMessageTimeout()?检查msdn中的LPRAM表。此外,msdn声明SendMessageTimeout是正确的函数。关于“lParam”值,是否有包含所有可用元素(如“TraySettings”)的列表?