web-dev-qa-db-fra.com

Comment définir l'arrière-plan du bureau sous Windows à partir d'un script?

Sur X Windows, j’avais un script de rappel "silencieux-alarme" qui modifiait la couleur de la fenêtre de ma racine (arrière-plan) en rouge uni, quelques secondes avant de le rétablir. Y a-t-il un moyen de le faire pour Windows XP?

Je pense à une sorte de tâche planifiée qui utilise cscript pour définir les clés de registre (HKEY_CURRENT_USER\Control Panel\Desktop). Cependant, mes tentatives ne semblent avoir aucun effet. Que dois-je signaler pour lire ces entrées de registre et redessiner le bureau?

14
David Leonard

Cela change l'arrière-plan via la ligne de commande. Il suffit de sauvegarder ceci en tant que fichier bat. Utilisez bmp ou vous devrez actualiser. Définit également le papier peint pour qu'il soit étiré. Si vous supprimez la ligne wallpaperstyle, elle sera automatiquement centrée.

@echo off
reg add "HKCU\control panel\desktop" /v wallpaper /t REG_SZ /d "" /f 
reg add "HKCU\control panel\desktop" /v wallpaper /t REG_SZ /d "C:\[LOCATION OF WALLPAPER HERE]" /f 
reg delete "HKCU\Software\Microsoft\Internet Explorer\Desktop\General" /v WallpaperStyle /f
reg add "HKCU\control panel\desktop" /v WallpaperStyle /t REG_SZ /d 2 /f
RUNDLL32.EXE user32.dll,UpdatePerUserSystemParameters 
exit
8
Tim

Je pense qu’une fois que vous modifiez le paramètre de papier peint dans le registre, vous devez simplement exécuter

RUNDLL32.EXE user32.dll,UpdatePerUserSystemParameters 

à partir de la ligne de commande et les modifications doivent prendre effet. Vous devez vous assurer que votre image est un fichier bmp.

En fait, j'ai juste essayé ceci en créant un fichier bmp de la taille d'un bureau qui était tout rouge. J'ai modifié la clé // HKCU/panneau de configuration/bureau/papier peint pour qu'elle contienne le chemin d'accès complet à cette image. J'ai exécuté la commande ci-dessus à partir de la ligne de commande et le bureau a été remplacé par le bmp rouge que je viens de créer.

6
Mark

Voici une option. Créez une petite application console avec un SharpDevelop. Mettez ce code dans Programs.cs. J'appelle l'application "CWP"; Changer le fond d'écran. Il suffit d’un paramètre sur la ligne de commande: le nom du fichier. Testé sous Windows 7 Ultimate 64 bits avec le fichier .bmp.

    /*
     * Created by SharpDevelop.
     * Date: 21.9.2012
     * Time: 16:13
     */
    using System;
    using System.Data;
    using System.Text;
    using System.Runtime.InteropServices;

    namespace cwp
    {

       class Program
        {
           [DllImport("user32.dll")]
           public static extern Int32 SystemParametersInfo(
               UInt32 action, UInt32 uParam, String vParam, UInt32 winIni);

            public static readonly UInt32 SPI_SETDESKWALLPAPER  = 0x14;
            public static readonly UInt32 SPIF_UPDATEINIFILE    = 0x01;
            public static readonly UInt32 SPIF_SENDWININICHANGE = 0x02;

            public static void SetWallpaper(String path)
            {
                Console.WriteLine("Setting wallpaper to '" + path + "'");
                SystemParametersInfo(SPI_SETDESKWALLPAPER, 0, path,
                    SPIF_UPDATEINIFILE | SPIF_SENDWININICHANGE);
            }

            public static void Main(string[] args)
            {
                if (args.Length >= 1)
                {
                    SetWallpaper( args[0] );
                }
            }
        }
    }
4
Polarlightning

ce n'est pas aussi cool que de passer du temps à écrire du code, mais il existe un utilitaire système assez utile appelé bginfo qui intègre des informations dans l'arrière-plan du bureau. c'est assez configurable avec toutes sortes d'options de ligne de commande. non, je ne l'ai pas écrit.

1
david dickey

La méthode de registre ne fonctionne pas tout le temps, surtout si l'image n'est pas au format bmp, vous pouvez donc essayer ma méthode. Il vous suffit d’ouvrir l’image de votre choix à l’aide de la visionneuse de photos Windows et d’utiliser un raccourci clavier pour définir l’image comme papier peint de votre bureau.

Dim wShell
set wShell = createobject("Wscript.Shell")
wShell.Run "cmd /c start " & Your photo path here,0,True

do
     wscript.sleep 100
loop until wShell.appactivate("Windows Photo Viewer") = true

wShell.Sendkeys  ("+{F10}")
WScript.Sleep 100
wShell.Sendkeys  "k"
wShell.Exec "taskkill /im dllhost.exe"

Ceci est un script vbs mais vous pouvez utiliser la même méthode en utilisant cmd

0
TahaEltahawy

Pour Windows 7, cela fonctionne même dans des zones restreintes !! ;) Remplacez votre chemin d’emplacement d’image par

C:\Users\1509967\Desktop\hi.jpg

reg add "HKEY_CURRENT_USER\control panel\desktop" /v wallpaper /t REG_SZ /d "" /f
reg add "HKEY_CURRENT_USER\control panel\desktop" /v wallpaper /t REG_SZ /d C:\Users\1509967\Desktop\hi.jpg /f
reg add "HKEY_CURRENT_USER\control panel\desktop" /v WallpaperStyle /t REG_SZ /d 2 /f
RUNDLL32.EXE user32.dll,UpdatePerUserSystemParameters
pause
exit
0