스크립트를 사용하여 Windows 바탕 화면 배경을 설정하는 방법


14

X Windows에서는 루트 창 (백그라운드) 색상을 몇 초 동안 단 몇 초 동안 다시 변경하기 전에 멋진 '자동 알람'알림 스크립트를 사용했습니다. XP?

cscript를 사용하여 레지스트리 키를 설정하는 일종의 예약 된 작업을 생각하고 있습니다 ( HKEY_CURRENT_USER\Control Panel\Desktop). 그러나 내 시도는 효과가없는 것 같습니다. 해당 레지스트리 항목을 읽고 바탕 화면을 다시 그리려면 무엇을 신호해야합니까?

답변:


8

이것은 명령 행을 통해 배경을 변경합니다. 이것을 박쥐 파일로 저장하십시오. bmp를 사용하면 새로 고쳐야합니다. 또한 배경 화면이 늘어나도록 설정합니다. wallpaperstyle 라인을 꺼내면 자동으로 중앙에 배치됩니다.

@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\TranscodedImageCache업데이트하기 전에 제거 해야 할 수도 있습니다 .
Michel de Ruiter

벽지가 로컬 컴퓨터에 있어야합니까 아니면 \\ server \ share \ wallpaper.bmp와 같은 네트워크의 다른 컴퓨터에있을 수 있습니까?
Ricardo Bohner

6

레지스트리에서 배경 화면 설정을 수정하면 간단히 실행하면됩니다.

RUNDLL32.EXE user32.dll,UpdatePerUserSystemParameters 

명령 행에서 변경 사항이 적용됩니다. 이미지가 bmp 파일인지 확인해야합니다.

사실, 방금 데스크탑 크기의 bmp 파일을 모두 빨간색으로 만들어서 시도했습니다. // HKCU / control panel / desktop / wallpaper 키를이 비트 맵의 ​​전체 경로 이름을 포함하도록 변경했습니다. 명령 줄에서 위의 명령을 실행하고 바탕 화면이 방금 만든 빨간색 bmp로 변경되었습니다.


이미지를 제거하려면 잘 작동하지만 "HKCU \ Control Panel \ Colors \ Background"에서 배경색을 변경하려고 시도해도 이미지가 변경되지 않습니다.
Peter Hahndorf

4

하나의 옵션이 있습니다. SharpDevelop를 사용하여 작은 콘솔 앱을 만듭니다. 이 코드를 Programs.cs에 넣습니다. 앱을 "CWP"라고합니다. 벽지를 변경하십시오. 명령 행에는 하나의 매개 변수 인 파일 이름 만 사용됩니다. .bmp 파일을 사용하여 Windows 7 Ultimate 64 비트에서 테스트되었습니다.

    /*
     * 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

실제로 코드를 작성하는 데 시간을 소비하는 것만 큼 ​​좋지않지만 데스크탑 배경에 정보를 포함시키는 bginfo 라는 꽤 유용한 시스템 유틸리티가 있습니다. 모든 종류의 명령 줄 옵션으로 구성 할 수 있습니다. 아니, 나는 그것을 쓰지 않았다.


0

Windows 7의 경우 제한된 지역에서도 작동합니다 !! ;) 이미지 위치 경로를

C : \ 사용자 \ 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

특히 사진이 bmp 형식이 아닌 경우 레지스트리 방법이 항상 작동하지 않으므로 내 방법을 시도해 볼 수 있습니다. Windows 사진 뷰어를 사용하여 원하는 그림을 열고 키보드 단축키를 사용하여 그림을 바탕 화면 배경 무늬로 설정하십시오.

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"

이것은 vbs 스크립트이지만 cmd를 사용하여 동일한 방법을 사용할 수 있습니다


0

아무리 노력해도 regedit 및 UpdatePerUserSystemParameters (큰 루프에서도)를 사용하여 배경 화면을 안정적으로 변경할 수 없으므로 powershell을 사용하여 매번 작동합니다.

참조 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

후속 조치, "rundll32.exe user32.DLL, SystemParametersInfo 20 0 C : \ wallpaper.bmp 1"과 같은 함수를 호출하면 다시 작동하지만 지금은 아무것도하지 않습니다. Microsoft 고정 보안 버그 및 rundll은 특정 방법 만 실행한다고 생각합니다.
Joric
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.