Detect if Themes are enabled?

  • Thread starter Thread starter Fred Hedges
  • Start date Start date
F

Fred Hedges

Using .NET 1.1, I need to be able to detect if Themes are enabled or
disabled, not for a specific application, but for the system as a whole (ie.
the current user). The reason I need to be able to do this is because of
this bug in MFC http://support.microsoft.com/?kbid=319740, which is used to
build a component I am in turn making use of. So, I need to detect if
Themes are running and if so, see if the correct version of uxtheme.dll is
installed, else disallow a certain operation.

Any hints?
 
I solved this using the code below, I hope it's more or less correct:


Dim myVersion As Version =
OSFeature.Feature.GetVersionPresent(OSFeature.Themes)

If not myVersion Is Nothing Then

Return True

Else

Return False

End If
 
Hi Fred,

You can use UxTheme's IsThemActive() API, available in Windows XP (NT 5.1)
and later.

<System.Runtime.InteropServices.DllImport("UxTheme")> _
Public Shared Function IsThemeActive() as Boolean
End Function

After the P/Invoke function is defined in the appropriate scope, you can
call it provided that the Operating System's version is at least Windows XP:

Dim fThemesActive As Boolean = False
If Environment.OSVersion.Version >= New Version(5, 1) Then
fThemesActive = IsThemeActive()
End If
 
To continue this conversation with myself, the above didn't work, because it
checks to see if the feature is present, not whether or not it is currently
switched on/off. I am still looking for a way to see if the user is using a
Theme (other than the stock "Classic Windows", which isn't really a Theme,
it's more the way things were before MS botched up it's themes
implementation).
 
Thats the one! Thanks.

Public Declare Auto Function IsThemeActive Lib "uxtheme.dll" () As Boolean
 
Back
Top