Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : DETERMINER QUEL THEME XP EST ACTIF (BLUE THEME, OLIVE THEME, SILVER THEME) [ Divers / General ] (copyrightx)

mercredi 8 novembre 2006 à 12:57:27 | DETERMINER QUEL THEME XP EST ACTIF (BLUE THEME, OLIVE THEME, SILVER THEME)

copyrightx

 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.

Merci pour votre aide,
Copyrightx.


mercredi 8 novembre 2006 à 20:32:51 | Re : DETERMINER QUEL THEME XP EST ACTIF (BLUE THEME, OLIVE THEME, SILVER THEME)

ShareVB

salut,

IsThemeActive et GetCurrentThemeName

ShareVB

jeudi 9 novembre 2006 à 10:08:19 | Re : DETERMINER QUEL THEME XP EST ACTIF (BLUE THEME, OLIVE THEME, SILVER THEME)

copyrightx

Bonjour ShareVB,

Un petit exemple de code serait le bienvenue ...

Copyrightx


jeudi 9 novembre 2006 à 14:33:41 | Re : DETERMINER QUEL THEME XP EST ACTIF (BLUE THEME, OLIVE THEME, SILVER THEME)

copyrightx

J'ai trouvé ça sur le forum de Microsoft (www.forums.microsoft.com) :

Private Declare Function IsThemeActiveAPI Lib "uxtheme.dll" Alias "IsThemeActive" () As Boolean

Public Function GetThemeActive() As Boolean
        isAct = IsThemeActiveAPI()
        If isAct = True Then
            GetThemeActive = True
        Else
            GetThemeActive = False
        End If
End Function

Sub Main()
    Dim isThemed As Boolean
    isThemed = GetThemeActive
    MsgBox isThemed
End Sub

Le problème c'est que ça ne vérifie que si le thème est actif ou pas ...
Je continue les recherches ...


dimanche 12 novembre 2006 à 14:52:26 | Re : DETERMINER QUEL THEME XP EST ACTIF (BLUE THEME, OLIVE THEME, SILVER THEME)

ShareVB

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
   
    szThemeFileName = Space(256)
    szColorBuff = Space(256)
    szSizeBuff = Space(256)
    GetCurrentThemeName StrPtr(szThemeFileName), 256, StrPtr(szColorBuff), 256, StrPtr(szSizeBuff), 256
   
    GetActiveThemeName = Mid$(szThemeFileName, InStrRev(szThemeFileName, "\") + 1)
    GetActiveThemeName = Mid$(GetActiveThemeName, 1, InStr(GetActiveThemeName, ".") - 1)
Else
    GetActiveThemeName = vbNullString
End If
End Function

Sub main()
MsgBox GetActiveThemeName
End Sub

ShareVB

lundi 13 novembre 2006 à 13:09:31 | Re : DETERMINER QUEL THEME XP EST ACTIF (BLUE THEME, OLIVE THEME, SILVER THEME)

copyrightx

Merci pour le code ShareVB, je teste et je te répond le plus vite possible ...

Copyrightx

lundi 20 novembre 2006 à 13:16:33 | Re : DETERMINER QUEL THEME XP EST ACTIF (BLUE THEME, OLIVE THEME, SILVER THEME)

copyrightx

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 ?

Copyrightx


lundi 20 novembre 2006 à 13:38:39 | Re : DETERMINER QUEL THEME XP EST ACTIF (BLUE THEME, OLIVE THEME, SILVER THEME)

ShareVB

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
  
    szThemeFileName = Space(256)
    szColorBuff = Space(256)
    szSizeBuff = Space(256)
    GetCurrentThemeName StrPtr(szThemeFileName), 256, StrPtr(szColorBuff), 256, StrPtr(szSizeBuff), 256
  
    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
  
    szThemeFileName = Space(256)
    szColorBuff = Space(256)
    szSizeBuff = Space(256)
    GetCurrentThemeName StrPtr(szThemeFileName), 256, StrPtr(szColorBuff), 256, StrPtr(szSizeBuff), 256
  
    GetActiveThemeColor = Mid$(szColorBuff, 1, InStr(szColorBuff, vbNullChar) - 1)
Else
    GetActiveThemeColor = vbNullString
End If
End Function

Public Function GetActiveThemeSize() As String
If (IsThemeActiveAPI()) Then
    Dim szThemeFileName As String, szColorBuff As String, szSizeBuff As String
  
    szThemeFileName = Space(256)
    szColorBuff = Space(256)
    szSizeBuff = Space(256)
    GetCurrentThemeName StrPtr(szThemeFileName), 256, StrPtr(szColorBuff), 256, StrPtr(szSizeBuff), 256
  
    GetActiveThemeSize = Mid$(szSizeBuff, 1, InStr(szSizeBuff, vbNullChar) - 1)
Else
    GetActiveThemeSize = vbNullString
End If
End Function

Sub main()
MsgBox GetActiveThemeName & "(" & GetActiveThemeColor & ") (" & GetActiveThemeSize & ")"
End Sub

ShareVB

lundi 20 novembre 2006 à 13:49:43 | Re : DETERMINER QUEL THEME XP EST ACTIF (BLUE THEME, OLIVE THEME, SILVER THEME)

copyrightx

Plutôt rapide les réponses sur le forum : c'est pas en mal !!!

Mais je crois que pour toi rapidité rime avec productivité !
Encore merci pour le code !

Je teste et je répond le plus vite possible pour confirmer.

Copyrightx



Cette discussion est classé dans : actif, theme, blue, renverra, olive


Répondre à ce message

Sujets en rapport avec ce message

Inserer du texte dans document actif d'une application multi - document [ par GMI ] Bonjours tous le monde,Je cherche à créer une application multi document ( Avec un MDIForm ), et je n'arrive pas à inserer du texte dans le document a Menu quand ont clique sur la barre en haut.... [ par Trafalio BlackHammer ] Ya un moyen de rajouter quelque chose dans la barre en haut quand ont clique Merci !Aurevoir et si vous pouvez répondre a mon Probleme de Progress Bar Aucunes requêtes ne fonctionnent avec l'ADO [ par Alain ] Dans mon appli. aucunes des requêtes, suppression consultation insertion, n'aboutissent.J'obtiens le message suivant :Erreur d'exécution '-2147217904 Pour les pros! [ par Danger Prophet ] BonjourComment est ce que je pourrais, depuis un bouton, ouvrir internet explorer à un adresse précise (sans qu'on le sache), de receuillir une prhase Sélection d'une ligne en Rich Text Box [ par Blousé ] Voilà un petit casse tête (pour moi entout cas, vu que je ne connaît pas grand chose) :A l'aide de la fonction Find je recherche dans mon texte des mo Access - VBA : Fonction sur chaque champ de chaque table [ par ghiscool ] Salut,alors voilà je voudrais virer tous les caractères spéciaux de chaque champ de chaque table. Ma fonction est faite, il n'y a plus qu'à l'applique copie d'une colonne d'un fichier excel a un autre. [ par gsu ] Comment faire pour ouvrir un fichier excel du meme nom que celui actif (date de l'enregistrement via une inputbox),copier une colonne et la coller dan "Impossible de trouver le formulaire auquel il est fait référence ..." Arrrrrffffffffff [ par ghiscool ] Alors voila mon problème : dans le code du sous-formulaire FormA, je veux acceder à un champ se trouvant dans ce formulaire : val = Forms!FormA!id.Val


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,671 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.