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

Contribuez .NET Discussion :

[C#] Comment changer l'arrière plan (DeskTop) ? [Trucs & Astuces]


Sujet :

Contribuez .NET

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 21
    Points : 15
    Points
    15
    Par défaut [C#] Comment changer l'arrière plan (DeskTop) ?
    Coucou,

    Comment on fait pour changer l'arrière plan à l'aide d'un programme C#? Je n'ai pas réussi en utilisant le registre.. Il y a t'il un autre moyen pour cela? Marci

  2. #2
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Il faut utiliser les API

  3. #3
    Expert éminent
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Points : 8 344
    Points
    8 344
    Par défaut
    Extrait d'un de mes programmes que j'ai fait pour ne pas à me faire ch*** à chercher un fond d'écran sur mon pc ( j'en ai des centaines )

    ps. C'est long

    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
     
        [Serializable]
        public class WallPaperEntry
        {
            public string FileName = "";
            public int UsageCount = 0;
     
            public enum Style : int
            {
                Tiled, Centered, Stretched
            }
     
            public Style ImageStyle = Style.Stretched;
     
     
            [DllImport("user32.dll", CharSet = CharSet.Auto)]
            static extern int SystemParametersInfo(
                int uAction, int uParam, string lpvParam, int fuWinIni);
     
            const int SPI_SETDESKWALLPAPER = 20;
            const int SPIF_UPDATEINIFILE = 0x1;
            const int SPIF_SENDWININICHANGE = 0x2;
     
            string GetTempWallPath()
            {
                string sRet = Application.LocalUserAppDataPath +
     Path.DirectorySeparatorChar +
                    "WallPaper" + Path.DirectorySeparatorChar +
                    "CurrentWallPaper.bmp";
                if(!Directory.Exists(Path.GetDirectoryName(sRet)))
                    Directory.CreateDirectory(Path.GetDirectoryName(sRet));
     
                return sRet;
            }
     
            public void ApplyWallpaper()
            {
                if(!File.Exists(FileName))
                {
                    MessageBox.Show(String.Format("Impossible de spécifier ce
     fond d\'écran. L\'image {0} n\'existe pas",FileName),
                        "Attention",
                        MessageBoxButtons.OK,
                        MessageBoxIcon.Warning);
                    return;
                }
     
                string bPath = "";
     
                Image bm = Image.FromFile(FileName);
                bm.Save(GetTempWallPath
    (),System.Drawing.Imaging.ImageFormat.Bmp);
                bPath = GetTempWallPath();
     
                RegistryKey key = Registry.CurrentUser.OpenSubKey("Control
     Panel\\Desktop", true);
     
                switch( ImageStyle )
     
                {
     
                    case Style.Stretched :
     
                        key.SetValue(@"WallpaperStyle", "2") ;
     
                        key.SetValue(@"TileWallpaper", "0") ;
     
                        break;
     
                    case Style.Centered :
     
                        key.SetValue(@"WallpaperStyle", "1") ;
     
                        key.SetValue(@"TileWallpaper", "0") ;
     
                        break;
     
                    case Style.Tiled :
     
                        key.SetValue(@"WallpaperStyle", "1") ;
     
                        key.SetValue(@"TileWallpaper", "1") ;
     
                        break;
     
                }
     
                key.Close();
     
                SystemParametersInfo(SPI_SETDESKWALLPAPER, 0,
     bPath,SPIF_SENDWININICHANGE);
     
            }
        }
    note. Il y a un bug qui fait que lorsque l'on démarre Windows, c'est l'ancien fond d'écran qui est activé. Je crois qu'il peut être répparé par l'utilisation de SPIF_UPDATEINIFILE, mais avec je rencontrait des bugs sur d'autres Windows ( même XP ) ...[/code]

  4. #4
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Sympa ce petit programme: j'en avais fait un du même genre aussi

  5. #5
    Membre habitué
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    209
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 209
    Points : 125
    Points
    125
    Par défaut
    Merci du programme mais je n'ai pas dit ce que je dois mettre en arrière plan.. Je veux pouvoir mettre une page .htm en arrière plan :/ Help

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 21
    Points : 15
    Points
    15
    Par défaut
    Citation Envoyé par System
    Merci du programme mais je n'ai pas dit ce que je dois mettre en arrière plan.. Je veux pouvoir mettre une page .htm en arrière plan :/ Help
    Désolée c'est moi qui ai écrit ça, j'avais pas vu que j'avais le pseudo de mon frère

  7. #7
    Expert éminent
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Points : 8 344
    Points
    8 344
    Par défaut
    Citation Envoyé par System
    Merci du programme mais je n'ai pas dit ce que je dois mettre en arrière plan.. Je veux pouvoir mettre une page .htm en arrière plan :/ Help
    Je ne crois pas que l'on puisse faire celà directement. Il faudrait peut être mieu chercher un moyen de transformer la page htm en image

  8. #8
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    MMhh mais je crois qu'il y a moyen d'ouvrir une page web dont le container est justement le Desktop , par les API mais j'avoue que là j'ai un trou de mémoire sur la méthode désolé

  9. #9
    Expert éminent
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Points : 8 344
    Points
    8 344
    Par défaut
    ActiveDesktop ?

  10. #10
    Rédacteur
    Avatar de Thomas Lebrun
    Profil pro
    Inscrit en
    Octobre 2002
    Messages
    9 161
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France

    Informations forums :
    Inscription : Octobre 2002
    Messages : 9 161
    Points : 19 434
    Points
    19 434
    Par défaut
    Citation Envoyé par smyley
    ActiveDesktop ?
    +1

  11. #11
    Expert éminent
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Points : 8 344
    Points
    8 344
    Par défaut
    http://www.javascriptkit.com/howto/active.shtml
    bon, j'ai trouvé ça
    "Background" tab. Click the browse button and find an HTML document on your hard drive to use as your background.
    là, je peut pas faire grand chose sur mon pc ( petite manipulation coûteuse en HDD ), mais tu pourrais alors essayer de remplacer l'image directement par une page html avec mon code pour voir ce que ça fait ( dans le pire des cas, ça va faire boom, mais bon )

  12. #12
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    En passant peut être par cette Interface IActiveDesktop

  13. #13
    Expert éminent
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Points : 8 344
    Points
    8 344
    Par défaut
    Dans ce cas :
    http://www.pinvoke.net/default.aspx/...veDesktop.html

    za marche
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    static IActiveDesktop Dsk = GetActiveDesktop();
    ...
    ...
                bPath = @"C:\Documents and
     Settings\Audrey\Bureau\IActiveDesktop.html";
                WALLPAPEROPT opt = new WALLPAPEROPT();
                opt.dwStyle = WPSTYLEe.WPSTYLE_STRETCH;
                Dsk.SetWallpaperOptions(ref opt,0);
                Dsk.SetWallpaper(bPath,0);
                Dsk.ApplyChanges(AddApplyFlags.AD_APPLY_ALL);
                SystemParametersInfo(SPI_SETDESKWALLPAPER, 0,
     bPath,SPIF_SENDWININICHANGE);
    Bon, maintenant, pour l'interface IActiveDesktop, j'avoue que j'ai du me battre et aller chercher à droite et à gauche les différents paramètres, ce qui résulte d'un code de 294 lignes, donc je ne crois pas que je peut le poster ici. Peut être qu'il y avais plus simple mais si vous voulez le code ... ask me ( ou bien alors dites, si je peut poster ici ce code )

  14. #14
    Expert éminent
    Avatar de neguib
    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 627
    Détails du profil
    Informations personnelles :
    Âge : 64
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 627
    Points : 7 879
    Points
    7 879
    Par défaut
    Citation Envoyé par smyley
    za marche
    ..
    Bon, maintenant, pour l'interface IActiveDesktop, j'avoue que j'ai du me battre et aller chercher à droite et à gauche les différents paramètres, ce qui résulte d'un code de 294 lignes, donc je ne crois pas que je peut le poster ici. Peut être qu'il y avais plus simple mais si vous voulez le code ... ask me ( ou bien alors dites, si je peut poster ici ce code )
    Ben autant faire un article à ce sujet

  15. #15
    Expert éminent
    Avatar de smyley
    Profil pro
    Inscrit en
    Juin 2003
    Messages
    6 270
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2003
    Messages : 6 270
    Points : 8 344
    Points
    8 344
    Par défaut
    bonne idée je vais peut être bien le faire ou alors en faire un code source de la section C#
    Donc en attandant, mp pour les demandeurs

  16. #16
    Membre à l'essai
    Profil pro
    Inscrit en
    Septembre 2005
    Messages
    21
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2005
    Messages : 21
    Points : 15
    Points
    15
    Par défaut
    Merci pour le code Problème résolu donc

  17. #17
    Nouveau Candidat au Club
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 1
    Points : 1
    Points
    1
    Par défaut
    bonjour...

    bon je vien de me choper un virus... je lai suup mais je sais pas se qu il a modif maintenant je peu plus modifier mon arriere plan windob. le virus a lui, mi un arriere plan (en .html... ) et je sais pas pourqoui, je peut plus changer mon arriere plan dans propriete etc... je peut rien changer... vu que vous creez des log pour le modif comme ca... quelqu'un aurai la solution du moin comment le virus a pu agir et voir se kon peu fair.

    merci

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

Discussions similaires

  1. Réponses: 1
    Dernier message: 29/06/2015, 07h19
  2. Réponses: 5
    Dernier message: 27/09/2007, 17h15
  3. Réponses: 4
    Dernier message: 21/05/2007, 08h34
  4. comment changer d'attribut de fonte dans un Tlabel?
    Par sb dans le forum Composants VCL
    Réponses: 3
    Dernier message: 21/08/2002, 17h53
  5. TextOut : comment changer de font
    Par Freakazoid dans le forum DirectX
    Réponses: 2
    Dernier message: 15/07/2002, 21h46

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