public enum AccentState { ACCENT_DISABLED = 0, // 禁用任何背景或透明效果 ACCENT_ENABLE_GRADIENT = 1, // 启用渐变背景,但不透明 ACCENT_ENABLE_TRANSPARENTGRADIENT = 2, // 启用渐变背景,并带有透明效果 ACCENT_ENABLE_BLURBEHIND = 3, // 启用模糊效果背后的透明效果 ACCENT_ENABLE_ACRYLICBLURBEHIND = 4, // 启用亚克力样式的模糊透明效果,通常用于窗口和任务栏 ACCENT_ENABLE_HOSTBACKDROP = 5, // 启用托管背景的透明效果,应用于当前活动窗口后的背景 ACCENT_INVALID_STATE = 6 // 无效状态,通常用于错误处理或状态未定义 }2、控制台根据用户输入的数字,传入对应枚举参数进行更改任务栏效果的具体实现:
public static void SetTaskbarTransparency(AccentState accentState) { var taskbarHwnd = FindWindow("Shell_TrayWnd", null); if (taskbarHwnd != IntPtr.Zero) { var accent = new AccentPolicy(); accent.AccentState = accentState; var accentStructSize = Marshal.SizeOf(accent); var accentPtr = Marshal.AllocHGlobal(accentStructSize); Marshal.StructureToPtr(accent, accentPtr, false); // 堆代码 duidaima.com var data = new WindowCompositionAttributeData(); data.Attribute = 19; data.SizeOfData = accentStructSize; data.Data = accentPtr; SetWindowCompositionAttribute(taskbarHwnd, ref data); Marshal.FreeHGlobal(accentPtr); } }3、具体应用图示:
如果只需要可执行程序的小伙伴,可以在源码库的发行版内直接下载:https://gitee.com/dreamer_j/transp-demo/releases/tag/1
(全文完)