Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How can I know which themepack is applied on my system?

Tags:

c++

windows

Normally when we double click on a themepack file it is applied on our system and a corresponding folder with the same name as the themepack is saved in

C:\Users\<username>\AppData\Local\Microsoft\Windows\Themes 

Now if I have multiple themepack files and I have applied each of them at least once, then all the themepacks will have a corresponding folder in the Themes folder. Now I want to know which particular theme is applied on my machine, programmatically.

(When we use a themepack file Custom.theme file is not updated)

like image 415
prakhar3agrwal Avatar asked Jan 01 '26 06:01

prakhar3agrwal


1 Answers

I'm pretty sure there's no API that can retrieve that information. Which makes sense, it isn't really relevant. An application never needs to know the name of the theme pack that the user selected.

What you can get using an API, and what is useful, is the name and properties of the theme that the user has enabled. For example, calling the GetCurrentThemeName() function and/or the GetThemeDocumentationProperty() function.aspx) with SZ_THDOCPROP_DISPLAYNAME will tell you whether the user has enabled the Aero theme or not. Or if they're using a custom theme that is not Aero. Just to be sure, though, I tested it, and neither of those functions returns the name of my currently selected theme pack.

However, you can read the registry to obtain the information you desire. Find it in the following location:

HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Themes\CurrentTheme

That value will contain a string corresponding to the full path to the currently selected theme pack, e.g.:

C:\Users\billg\AppData\Local\Microsoft\Windows\Themes\Pink Polka Dots.theme

If you want, you can strip out the path spec and extension, using just the file name as the name of the theme pack, e.g. Pink Polka Dots.

But that isn't a complete solution because it doesn't take localization into account. Especially with system-provided theme packs, the file name is going to be in English, but the name of the theme pack is going to be localized in the UI. The user sees something different when they pick themes.

like image 194
Cody Gray Avatar answered Jan 03 '26 12:01

Cody Gray