gpt4 book ai didi

powershell 将新设置应用到任务栏

转载 作者:行者123 更新时间:2023-12-02 03:55:49 25 4
gpt4 key购买 nike

我正在使用 powershell 并通过更改注册表项来更改一些任务栏设置。例如,我编写了一个自动隐藏启用禁用功能。

$autoHideSettingsPath = "HKCU:\Software\Microsoft\Windows\CurrentVersion\Explorer\StuckRects2";
$autoHideValueName = "Settings";

Function toggleAutohideRegistrySettings($enable)
{

$key = Get-ItemProperty -Path $autoHideSettingsPath -Name $autoHideValueName;

Write-Host "key is: " + $key
if($enable)
{
$key.$autoHIdeValueName[8] = $key.$autoHideValueName[8] -bor 1;

}else{
$key.$autoHIdeValueName[8] = $key.$autoHideValueName[8] -band 0;
}

Set-ItemProperty -Path $autoHideSettingsPath -Name $autoHideValueName -Value $key.$autoHideValueName;
}

注册表中的更改效果很好。但要生效,我需要重新启动 explorer.exe。我显然也可以在 PS 中做到这一点......但我注意到当你在菜单(鼠标方式)中应用自动隐藏设置时,explorer.exe 没有被重新启动。

所以我的问题是:如何在不重新启动 explorer.exe 的情况下将更改应用于 PS 中的任务栏?

最佳答案

我已经使用上面的脚本向应用程序发送消息,指出注册表中有新设置。并非所有应用程序都可以收到此消息,但我认为 explore 可以。

试试看,在应用注册表设置后调用它:

$sign = @"
using System;
using System.Runtime.InteropServices;

public static class RegUpdate
{
private const int HWND_BROADCAST = 0xffff;
private const int WM_WININICHANGE = 0x001a, WM_SETTINGCHANGE = WM_WININICHANGE, INI_INTL = 1;
[DllImport("user32.dll")]
private static extern int SendMessage(int hWnd, uint wMsg, uint wParam, uint lParam);

public static string SendM()
{
try
{
SendMessage(HWND_BROADCAST, WM_SETTINGCHANGE, 0, INI_INTL);
return "0";
}

catch (Exception ex)
{
return (ex.Message);
}
}
}
"@
$type = Add-Type -TypeDefinition $sign -Language CSharp -PassThru
$type::SendM()

关于powershell 将新设置应用到任务栏,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12669294/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com