SetWindowTheme (uxtheme)
Last changed: -82.137.209.8

.
Summary
Causes a window to use a different set of visual style information than its class normally uses.

C# Signature:

[DllImport("uxtheme.dll", ExactSpelling=true, CharSet=CharSet.Unicode)]
public static extern int SetWindowTheme(IntPtr hWnd, String pszSubAppName, String pszSubIdList);

[DllImport("uxtheme.dll", ExactSpelling=true, CharSet=CharSet.Unicode)]
public static extern int SetWindowTheme(IntPtr hWnd, int pszSubAppName, String pszSubIdList);

[DllImport("uxtheme.dll", ExactSpelling=true, CharSet=CharSet.Unicode)]
public static extern int SetWindowTheme(IntPtr hWnd, String pszSubAppName, int pszSubIdList);

[DllImport("uxtheme.dll", ExactSpelling=true, CharSet=CharSet.Unicode)]
public static extern int SetWindowTheme(IntPtr hWnd, int pszSubAppName, int pszSubIdList);

VB .NET Signature:

Public Declare Unicode Function SetWindowTheme Lib "uxtheme.dll" (ByVal hWnd As HandleRef, ByVal pszSubAppName As String, ByVal pszSubIdList As String) As Integer

<DllImport("uxtheme.dll", ExactSpelling := True, CharSet := CharSet.Unicode)> _
Public Shared Function SetWindowTheme(hWnd As IntPtr, pszSubAppName As [String], pszSubIdList As [String]) As Integer
End Function

<DllImport("uxtheme.dll", ExactSpelling := True, CharSet := CharSet.Unicode)> _
Public Shared Function SetWindowTheme(hWnd As IntPtr, pszSubAppName As Integer, pszSubIdList As [String]) As Integer
End Function

<DllImport("uxtheme.dll", ExactSpelling := True, CharSet := CharSet.Unicode)> _
Public Shared Function SetWindowTheme(hWnd As IntPtr, pszSubAppName As [String], pszSubIdList As Integer) As Integer
End Function

<DllImport("uxtheme.dll", ExactSpelling := True, CharSet := CharSet.Unicode)> _
Public Shared Function SetWindowTheme(hWnd As IntPtr, pszSubAppName As Integer, pszSubIdList As Integer) As Integer
End Function

User-Defined Types:

None.

Notes:

None.

Tips & Tricks:

Imports System.Runtime.InteropServices

Public Class Form1

    Private Random As Random
    <DllImport("uxtheme.dll", CharSet:=CharSet.Unicode, ExactSpelling:=True)> _
    Private Shared Function SetWindowTheme(ByVal hWnd As IntPtr, ByVal appName As String, ByVal partList As String) As Integer
    End Function
    Public Sub New()
    InitializeComponent()
    Me.Font = System.Drawing.SystemFonts.IconTitleFont
    SetWindowTheme(ListView1.Handle, "explorer", Nothing)
    End Sub

End Class

Sample Code:

using System.Runtime.InteropServices;
...
public class MyForm : System.Windows.Forms.Form
...
[DllImport("uxtheme", ExactSpelling=true, CharSet=CharSet.Unicode)]
public extern static Int32 SetWindowTheme(IntPtr hWnd, String textSubAppName, String textSubIdList);
...
public MyForm()
{                    
SetWindowTheme(this.AnyControl.Handle,"","");
}

Alternative Managed API:

TODO

Documentation