IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

API, COM et SDKs Delphi Discussion :

Comment changer le thème et l'apparence de Windows ?


Sujet :

API, COM et SDKs Delphi

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2004
    Messages
    696
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 696
    Par défaut Comment changer le thème et l'apparence de Windows ?
    Bonjour,

    Connaissez vous les API qui permette de controler le thème et l'apparance ce Windows XP:

    En effet je souhaite forcer lors de l'utilisation de mon application le thème et apparence ci-dessous :

    Thème :Windows XP
    Apparence :Style Windows XP
    Modèles de couleur : Gris

    Question subsidaire savez vous comment installer des fichier SKN (skin) dasn windows XP, et est ce installable

    Cordialement
    Qays

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Août 2004
    Messages
    696
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2004
    Messages : 696
    Par défaut
    J'ai presque trouvé,

    J'ai la fonction qui me donne ce qui est installer (theme apparence, couleur)

    reste a trouvé la fonction qui défini ces parametre

    Qays

    pour info

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
     
     
    var
      Form1: TForm1;
      GetCurrentThemeName: function (pszThemeFileName: LPWSTR; cchMaxNameChars: Integer;
        pszColorBuff: LPWSTR; cchMaxColorChars: Integer; pszSizeBuff: LPWSTR;
        cchMaxSizeChars: Integer): HRESULT; stdcall;
    implementation
    uses ComObj, SyncObjs;
    {$R *.dfm}
     
    procedure TForm1.Button2Click(Sender: TObject);
    var
      FileName, ColorScheme, SizeName: WideString;
      hThemeLib: THandle;
    begin
      try
        hThemeLib := LoadLibrary('uxtheme.dll');
        if hThemeLib > 0 then
          GetCurrentThemeName := GetProcAddress(hThemeLib, 'GetCurrentThemeName');
        if Assigned(GetCurrentThemeName) then
        begin
          SetLength(FileName, 255);
          SetLength(ColorScheme, 255);
          SetLength(SizeName, 255);
          OleCheck(GetCurrentThemeName(PWideChar(FileName), 255,PWideChar(ColorScheme), 255, PWideChar(SizeName), 255));
          // show the the theme path and file name.
          ShowMessage(PWideChar(FileName));
          // show the color scheme name
          ShowMessage(PWideChar(ColorScheme));
          // show the size name
          ShowMessage(PWideChar(SizeName));
        end;
      finally
        FreeLibrary(hThemeLib);
      end;
    end;

  3. #3
    Membre Expert
    Avatar de Clorish
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    2 474
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 2 474
    Par défaut
    ca serais pas encore une certaine variable dans la BdR qu'il faudrais modifier ?

    Fait une sauvegarde de la BdR complete avant et apres la modification.
    En faisant une comporaison des 2 fichiers (UltraEdit le fait) tu decouvriras peut etre quelles sont les entrees qui on ete modifiés ....

  4. #4
    Membre Expert
    Avatar de LadyWasky
    Femme Profil pro
    Inscrit en
    Juin 2004
    Messages
    2 932
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 55
    Localisation : France, Hauts de Seine (Île de France)

    Informations forums :
    Inscription : Juin 2004
    Messages : 2 932
    Par défaut
    Vite fait, comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
    uses uxtheme,Registry;
    ...
     
    Procedure ChangeStyleVisuel(StyleVisuel:string);
    const CleRegistre='Software\Microsoft\Windows\CurrentVersion\ThemeManager';
    var BaseRegistre:TRegistry;
    begin
      BaseRegistre:=TRegistry.Create;
      try
        BaseRegistre.RootKey:= HKEY_CURRENT_USER;
        // False car nous ne voulons pas la créer si elle n'existe pas
        BaseRegistre.OpenKey(CleRegistre, False);
        BaseRegistre.WriteString('ColorName',StyleVisuel);
      finally
        BaseRegistre.Free;
      end;
     
      //Applique le style
      EnableTheming(IsThemeActive);
    end;
     
    procedure TForm1.Button1Click(Sender: TObject);
    begin
      //Gris Clair
      ChangeStyleVisuel('Metallic');
    end;
     
    procedure TForm1.Button2Click(Sender: TObject);
    begin
      //Vert Olive
      ChangeStyleVisuel('Homestead');
    end;
     
    procedure TForm1.Button3Click(Sender: TObject);
    begin
      //Bleu
      ChangeStyleVisuel('NormalColor');
    end;

    Pour Passer du Look XP au look "Classique" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    Procedure SetLookClassique;
    begin
      EnableTheming(False);
    end;
     
    Procedure SetLookXP;
    begin
      EnableTheming(True);
    end;
     
    function IsLookXP:boolean;
    begin
       result:=IsThemeActive;
    end;
     
    function IsLookClassique:boolean;
    begin
       result:=not IsThemeActive;
    end;
     
    Procedure Basculer_Look_XP_vers_Classique_et_vice_versa;
    begin
       EnableTheming(not IsThemeActive);
    end;
    A noter :
    Il ne faut pas confondre "Theme" et "Apparence", c'est là ou ça se corse...

    Si vous faites clic droit sur le bureau, et choisissez propriétés, vous vous retrouvez entre autres, avec deux onglets :
    - Thèmes
    - Apparences

    Dans les deux, vous pouvez choisir "Windows Classic" et "Windows XP", mais dans les deux, ça ne change pas du tout la même chose....

    En gros, si vous choisissez le Thème "Windows XP" (appelé "Luna"), vous pouvez passer, avec le code que j'ai donné d'une apparence "Classic" (Thème inactif) à une apparence "XP" (Theme Actif).

    Mais si vous utilisez le Theme "Windows Classic", le code que je vous ai donné ne fonctionne plus, là il faut utiliser las API d'avant Windows XP !!!

    Là il s'agirait de dire à Windows de charger le fichier de thèmes "Luna.msstyle" au lieu de "WindowsClassic.msstyle"

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 04/10/2011, 17h40
  2. Comment changer le thème de mon site
    Par nkkin dans le forum ASP.NET
    Réponses: 4
    Dernier message: 19/04/2010, 22h54
  3. [Konqueror] Comment changer le thême des icones ?
    Par mchk0123 dans le forum SUSE
    Réponses: 4
    Dernier message: 20/08/2008, 12h59
  4. Comment changer le mot de passe de session Windows ?
    Par jmjmjm dans le forum API, COM et SDKs
    Réponses: 0
    Dernier message: 15/11/2007, 07h00
  5. Comment changer le mot de passe de session Windows ?
    Par jmjmjm dans le forum Langage
    Réponses: 0
    Dernier message: 13/11/2007, 14h11

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo