Como definir o plano de fundo da área de trabalho no Windows a partir de um script?

14

No X Windows, eu tinha um script de lembrete 'alarme silencioso' que mudaria a cor da janela raiz (plano de fundo) para vermelho sólido, apenas por alguns segundos alguns instantes antes de alterá-la novamente. Existe uma maneira de fazer isso no Windows XP?

Estou pensando em algum tipo de tarefa agendada que usa cscript para definir chaves do Registro ( HKEY_CURRENT_USER\Control Panel\Desktop). No entanto, minhas tentativas parecem não ter nenhum efeito. O que preciso sinalizar para ler essas entradas do registro e redesenhar a área de trabalho?

gronostaj
fonte

Respostas:

8

Isso muda o plano de fundo via linha de comando. Apenas salve isso como um arquivo bat. Use bmp ou você terá que atualizar. Também define o papel de parede para ser esticado. Se você retirar a linha wallpaperstyle, ela será automaticamente centralizada.

@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
Alex
fonte
Talvez você precise remover HKCU\Control Panel\Desktop\TranscodedImageCacheantes de atualizar.
Michel de Ruiter
O papel de parede precisa estar no computador local ou em outro computador na rede, como \\ server \ share \ wallpaper.bmp?
Ricardo Bohner
6

Acho que depois de modificar a configuração do papel de parede no registro, basta executar

RUNDLL32.EXE user32.dll,UpdatePerUserSystemParameters 

na linha de comando e as alterações devem entrar em vigor. Você precisa ter certeza de que sua imagem é um arquivo bmp.

Na verdade, eu apenas tentei isso criando um arquivo bmp do tamanho de uma área de trabalho que era todo vermelho. Alterei a tecla // HKCU / painel de controle / área de trabalho / papel de parede para conter o nome do caminho completo desse bitmap. Executei o comando acima na linha de comando e a área de trabalho mudou para o bmp vermelho que acabei de criar

Marca
fonte
funciona bem para remover a imagem, mas quando tentei alterar a cor de plano de fundo em "HKCU \ Painel de controle \ Cores \ Plano de fundo", isso não ocorre.
Peter Hahndorf
4

Aqui está uma opção. Crie um pequeno aplicativo de console com um SharpDevelop. Coloque esse código em Programs.cs. Eu chamo o aplicativo "CWP"; Mudar papel de parede. É preciso apenas um parâmetro na linha de comando: o nome do arquivo. Testado no Windows 7 Ultimate de 64 bits com o arquivo .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] );
                }
            }
        }
    }
Polarlightning
fonte
1

isso não é tão legal quanto gastar tempo escrevendo código, mas há um utilitário de sistema bastante útil chamado bginfo que incorpora informações no plano de fundo da área de trabalho. é razoavelmente configurável com todos os tipos de opções de linha de comando. não, eu não escrevi.


fonte
0

Para o Windows 7, funciona mesmo em áreas restritas! ;) Substitua o caminho do local da imagem por

C: \ Usuários \ 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
Anand Varkey Philips
fonte
0

O método de registro não funciona o tempo todo, especialmente se a imagem não estiver no formato bmp, para que você possa tentar o meu método. Simplesmente abra a imagem desejada usando o visualizador de fotos do Windows e use um atalho de teclado para definir a imagem como papel de parede da área de trabalho.

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"

Este é um script vbs, mas você pode usar o mesmo método usando o cmd

TahaEltahawy
fonte