This code allows you to set the Windows taskbar Style to Transparant, Blur or Acrylic in VB.NET like TranslucentTB does.
Declarations
Friend Structure WindowCompositionAttributeData
Public Attribute As WindowCompositionAttribute
Public Data As IntPtr
Public SizeOfData As Integer
End Structure
Friend Enum WindowCompositionAttribute
WCA_ACCENT_POLICY = 19
End Enum
Friend Enum AccentState
ACCENT_DISABLED = 0
ACCENT_ENABLE_GRADIENT = 1
ACCENT_ENABLE_TRANSPARENTGRADIENT = 2
ACCENT_ENABLE_BLURBEHIND = 3
ACCENT_ENABLE_TRANSPARANT = 6
ACCENT_ENABLE_ACRYLICBLURBEHIND = 4
End Enum
<StructLayout(LayoutKind.Sequential)>
Friend Structure AccentPolicy
Public AccentState As AccentState
Public AccentFlags As Integer
Public GradientColor As Integer
Public AnimationId As Integer
End Structure
Friend Declare Function SetWindowCompositionAttribute Lib "user32.dll" (ByVal hwnd As IntPtr, ByRef data As WindowCompositionAttributeData) As Integer
Private Declare Auto Function FindWindow Lib "user32.dll" (ByVal lpClassName As String, ByVal lpWindowName As String) As IntPtr
Code
Friend Sub EnableTaskbarStyle()
Dim tskBarClassName As String = "Shell_TrayWnd"
Dim tskBarHwnd As IntPtr = FindWindow(tskBarClassName, Nothing)
Dim accent = New AccentPolicy()
Dim accentStructSize = Marshal.SizeOf(accent)
' # Taskbar Style Acrylic
' accent.AccentState = AccentState.ACCENT_ENABLE_ACRYLICBLURBEHIND
' accent.GradientColor = 10 'Or 16777215
' # Taskbar Style Blur
' accent.AccentState = AccentState.ACCENT_ENABLE_BLURBEHIND
' # Taskbar Style Transparant
accent.AccentState = AccentState.ACCENT_ENABLE_TRANSPARANT
Dim accentPtr = Marshal.AllocHGlobal(accentStructSize)
Marshal.StructureToPtr(accent, accentPtr, False)
Dim data = New WindowCompositionAttributeData()
data.Attribute = WindowCompositionAttribute.WCA_ACCENT_POLICY
data.SizeOfData = accentStructSize
data.Data = accentPtr
SetWindowCompositionAttribute(tskBarHwnd, data)
Marshal.FreeHGlobal(accentPtr)
End Sub