|
web
newsgroups
|
|||||||||||||||||||||||
|
|||||||||||||||||||||||
Detect if Themes are enabled?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 Show quoteHide quote "Fred Hedges" <dontlike@spammuch.com> escribió en el mensaje news:e4ccba$o9e$1$8300dec7@news.demon.co.uk... > 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? > > Fred,
That is a good method. Ken ----------------- Show quoteHide quote "Fred Hedges" wrote: > > 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 > > > "Fred Hedges" <dontlike@spammuch.com> escribió en el mensaje > news:e4ccba$o9e$1$8300dec7@news.demon.co.uk... > > 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? > > > > > > > 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). Show quoteHide quote "Fred Hedges" <dontlike@spammuch.com> escribió en el mensaje news:e4cdio$qgf$1$8300dec7@news.demon.co.uk... > > 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 > > > "Fred Hedges" <dontlike@spammuch.com> escribió en el mensaje > news:e4ccba$o9e$1$8300dec7@news.demon.co.uk... >> 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? >> >> > > 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 Show quoteHide quote "Fred Hedges" wrote: > 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? > > > Thats the one! Thanks.
Public Declare Auto Function IsThemeActive Lib "uxtheme.dll" () As Boolean Show quoteHide quote "Stanimir Stoyanov" <admin{at}stoyanoff{dot}info> escribió en el mensaje news:278C2F44-B487-4A31-94C8-3B845BB384DF@microsoft.com... > 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 > > -- > Stanimir Stoyanov > www.stoyanoff.info > > > "Fred Hedges" wrote: > >> 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? >> >> >> "Fred Hedges" <dontlike@spammuch.com> schrieb: Remove the 'Auto' keyword.> Public Declare Auto Function IsThemeActive Lib "uxtheme.dll" () As Boolean -- M S Herfried K. Wagner M V P <URL:http://dotnet.mvps.org/> V B <URL:http://classicvb.org/petition/> |
|||||||||||||||||||||||