如何在不重新启动 explorer.exe 的情况下在 Windows 11 中切换自动隐藏任务栏?

问题描述 投票:0回答:1

我在应用程序的生命周期中遇到了显示任务栏的问题。在 Windows 10 上,我能够通过带有 0 的 SHAppBarMessage() 函数发送 ABM_SETSTATE 消息以关闭自动隐藏。但是,在 Windows 11 上,任务栏会闪烁片刻然后再次隐藏。

我找到了一种解决方法来更改注册表中的自动隐藏参数 (HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\StuckRects3),但要应用该设置,它需要重新启动 explorer.exe,这不适合我的情况。

winapi taskbar windows-11
1个回答
0
投票

在 Windows 11 中现在是

System_TrayWnd

public static IntPtr Handle
{
    get
    {
        return FindWindow("Shell_TrayWnd", "");
    }
}

需要

public void SetTaskbarState(AppBarStates option)
{
    APPBARDATA msgData = new APPBARDATA();
    msgData.cbSize = (UInt32)Marshal.SizeOf(msgData);
    msgData.hWnd = Handle;
    msgData.lParam = (Int32)(option);
    SHAppBarMessage((UInt32)AppBarMessages.SetState, ref msgData);
}

public static IntPtr Handle
{
    get
    {
        return FindWindow("System_TrayWnd", "");
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.