copyrightx
Messages postés59Date d'inscriptionlundi 8 novembre 2004StatutMembreDernière intervention14 janvier 2016
-
8 nov. 2006 à 12:57
copyrightx
Messages postés59Date d'inscriptionlundi 8 novembre 2004StatutMembreDernière intervention14 janvier 2016
-
20 nov. 2006 à 13:49
Bonjour à tous,
J'aimerais savoir s'il existe un moyen (avec ou sans UxTheme.dll) de déterminer quel thème de Windows est actif. Si il s'agit du thème "Blue Theme", la fonction (que je vais créer) renverra 0, pour "Olive Theme" elle renverra 1, pour "Silver Theme" elle renverra 2 et enfin si il s'agit d'un autre thème, elle renverra -1. Il faut juste qu'elle puisse différencier les trois thèmes Windows par défaut.
ShareVB
Messages postés2676Date d'inscriptionvendredi 28 juin 2002StatutMembreDernière intervention13 janvier 201626 20 nov. 2006 à 13:38
salut,
en fait, c'est le deuxième paramètre de l'api...seulement, les noms sont plutôt bizarre NormalColor bleu, HomeStead olive, Metallic = silver...
Option Explicit
Private Declare Function IsThemeActiveAPI Lib "uxtheme.dll" Alias "IsThemeActive" () As Boolean
Private Declare Function GetCurrentThemeName Lib "uxtheme.dll" ( _
ByVal pszThemeFileName As Long, _
ByVal dwMaxNameChars As Long, _
ByVal pszColorBuff As Long, _
ByVal cchMaxColorChars As Long, _
ByVal pszSizeBuff As Long, _
ByVal cchMaxSizeChars As Long _
) As Long
Public Function GetActiveThemeName() As String
If (IsThemeActiveAPI()) Then
Dim szThemeFileName As String, szColorBuff As String, szSizeBuff As String
GetActiveThemeName = Mid$(szThemeFileName, InStrRev(szThemeFileName, "") + 1)
GetActiveThemeName = Mid$(GetActiveThemeName, 1, InStr(GetActiveThemeName, ".") - 1)
Else
GetActiveThemeName = vbNullString
End If
End Function
Public Function GetActiveThemeColor() As String
If (IsThemeActiveAPI()) Then
Dim szThemeFileName As String, szColorBuff As String, szSizeBuff As String
ShareVB
Messages postés2676Date d'inscriptionvendredi 28 juin 2002StatutMembreDernière intervention13 janvier 201626 12 nov. 2006 à 14:52
salut,
désolé pour la latence...
Option Explicit
Private Declare Function IsThemeActiveAPI Lib "uxtheme.dll" Alias "IsThemeActive" () As Boolean
Private Declare Function GetCurrentThemeName Lib "uxtheme.dll" ( _
ByVal pszThemeFileName As Long, _
ByVal dwMaxNameChars As Long, _
ByVal pszColorBuff As Long, _
ByVal cchMaxColorChars As Long, _
ByVal pszSizeBuff As Long, _
ByVal cchMaxSizeChars As Long _
) As Long
Public Function GetActiveThemeName() As String
If (IsThemeActiveAPI()) Then
Dim szThemeFileName As String, szColorBuff As String, szSizeBuff As String
copyrightx
Messages postés59Date d'inscriptionlundi 8 novembre 2004StatutMembreDernière intervention14 janvier 2016 20 nov. 2006 à 13:16
Bonjour,
Tout d'abord et ce, avant les formalités, merci pour le code ShareVB.
Ce dernier est très complêt car la fonction GetActiveThemeName retourne bien le nom du thème en cours, mais problème ...
Le fichier de thème Windows XP par défaut s'appelle "Luna". La fonction GetActiveThemeName renvoie donc la chaîne de caractère "Luna" mais cependant, ne permet pas de faire la différence entre le style BLUE, OLIVE et SILVER. Ce code ne répond donc qu'à la moitié de la question ...
Y a-t-il une fonction API qui permet d'obtenir le nom du style actif à partir du thème passé en paramêtre pour ainsi renvoyer, à partir de "Luna" (ou même sans passer de paramêtres), le style actif : BLUE ou OLIVE ou SILVER ?