Windows'da masaüstü arka planını bir komut dosyasından nasıl ayarlayabilirim?


14

X Windows'da, kök pencerem (arka plan) rengimi sabit kırmızıya dönüştürecek serin bir 'sessiz alarm' hatırlatma komut dosyası vardı, geri değiştirmeden önce birkaç saniye için. Windows için bunu yapmanın bir yolu var mı? XP?

Kayıt defteri anahtarlarını ( HKEY_CURRENT_USER\Control Panel\Desktop) ayarlamak için cscript kullanan zamanlanmış görev bir tür düşünüyorum . Ancak girişimlerimin herhangi bir etkisi yok gibi görünüyor. Bu kayıt defteri girdilerini okumak ve masaüstünü yeniden çizmek için nelere işaret etmem gerekir?

Yanıtlar:


8

Bu komut satırından arka planı değiştirir. Bunu bir yarasa dosyası olarak kaydedin. Bmp kullanın yoksa yenilemeniz gerekir. Ayrıca gerilecek duvar kağıdını ayarlar. Duvar kağıdı stili çizgisini çıkarırsanız, otomatik olarak ortalanır.

@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

HKCU\Control Panel\Desktop\TranscodedImageCacheGüncellemeden önce kaldırmanız gerekebilir .
Michel de Ruiter

Duvar kağıdının yerel bilgisayarda olması veya ağdaki \\ server \ share \ wallpaper.bmp gibi farklı bir bilgisayarda olması gerekiyor mu?
Ricardo Bohner

6

Kayıt defterinde duvar kağıdı ayarını değiştirdiğinizde, sadece çalıştırmanız gerektiğini düşünüyorum

RUNDLL32.EXE user32.dll,UpdatePerUserSystemParameters 

komut satırından ve değişikliklerin geçerli olması gerekir. Resminizin bir bmp dosyası olduğundan emin olmanız gerekir.

Aslında, sadece kırmızı olan bir masaüstü boyutlu bmp dosyası oluşturarak bunu denedim. // HKCU / kontrol paneli / masaüstü / duvar kağıdı anahtarını bu bitmap'in tam yol adını içerecek şekilde değiştirdim. Yukarıdaki komutu komut satırından çalıştırdım ve masaüstü yeni oluşturduğum kırmızı bmp olarak değiştirildi


görüntüyü kaldırmak benim için iyi çalışıyor, ancak "HKCU \ Denetim Masası \ Renkler \ Arka Plan" Arka plan rengini değiştirmeye çalıştığımda bunu yapmaz.
Peter Hahndorf

4

İşte bir seçenek. SharpDevelop ile küçük bir Konsol Uygulaması oluşturun. Bu kodu Programs.cs dosyasına koyun. Ben app "CWP" diyoruz; Duvar kağıdını değiştir. Komut satırında yalnızca bir parametre alır: dosya adı. .Bmp -file ile Windows 7 Ultimate 64 bit üzerinde test edilmiştir.

    /*
     * 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] );
                }
            }
        }
    }

1

Bu, kod yazmak için zaman harcamak kadar havalı değil, ancak bginfo adı verilen ve masaüstünün arka planına bilgi ekleyen oldukça kullanışlı bir sistem aracı var. her türlü komut satırı seçeneği ile oldukça yapılandırılabilir. hayır, ben yazmadım.


0

Windows 7 için, kısıtlı alanlarda bile çalışır !! ;) Görüntü konum yolunuzu

C: \ Kullanıcılar \ 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

Kayıt defteri yöntemi, özellikle resim bmp biçiminde değilse, her zaman çalışmaz, bu yüzden yöntemimi deneyebilirsiniz. Windows fotoğraf görüntüleyicisini kullanarak istediğiniz resmi açın ve resmi masaüstü duvar kağıdı olarak ayarlamak için bir klavye kısayolu kullanın.

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"

Bu bir vbs komut dosyasıdır, ancak cmd kullanarak aynı yöntemi kullanabilirsiniz


0

Denedim ne olursa olsun ben regedit ve UpdatePerUserSystemParameters (hatta büyük döngüler ile) ile duvar kağıdı değiştirmek olamazdı, bu yüzden powershell kullanarak sona erdi, her zaman çalışır.

Bkz. Https://www.joseespitia.com/2017/09/15/set-wallpaper-powershell-function/

Set-Wallpaper.ps1 :

# use powershell.exe Set-Wallpaper.ps1 -Image "<path to image>"

param ([string]$Image="")

Function Set-WallPaper($Image) {
<#
.SYNOPSIS
Applies a specified wallpaper to the current user's desktop

.PARAMETER Image
Provide the exact path to the image

.EXAMPLE
Set-WallPaper -Image "C:\Wallpaper\Default.jpg"

#>

Add-Type -TypeDefinition @" 
using System; 
using System.Runtime.InteropServices;

public class Params
{ 
    [DllImport("User32.dll",CharSet=CharSet.Unicode)] 
    public static extern int SystemParametersInfo (Int32 uAction, 
                                                   Int32 uParam, 
                                                   String lpvParam, 
                                                   Int32 fuWinIni);
}
"@ 

$SPI_SETDESKWALLPAPER = 0x0014
$UpdateIniFile = 0x01
$SendChangeEvent = 0x02

$fWinIni = $UpdateIniFile -bor $SendChangeEvent

$ret = [Params]::SystemParametersInfo($SPI_SETDESKWALLPAPER, 0, $Image, $fWinIni)
}

Set-WallPaper -Image $Image

Takip, biri böyle fonksiyonu çağırmayı deneyebilirsiniz: "rundll32.exe user32.DLL, SystemParametersInfo 20 0 C: \ wallpaper.bmp 1" ve o zaman geri çalıştı ama şimdi hiçbir şey yapmaz. Microsoft sabit güvenlik hatası ve rundll sadece belirli yöntemleri çalıştırıyor sanırım.
Joric
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.