我在应用程序的生命周期中遇到了显示任务栏的问题。在 Windows 10 上,我能够通过带有 0 的 SHAppBarMessage() 函数发送 ABM_SETSTATE 消息以关闭自动隐藏。但是,在 Windows 11 上,任务栏会闪烁片刻然后再次隐藏。
我找到了一种解决方法来更改注册表中的自动隐藏参数 (HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Explorer\StuckRects3),但要应用该设置,它需要重新启动 explorer.exe,这不适合我的情况。
在 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", "");
}
}