스크립트를 사용하여 Windows 바탕 화면 배경을 설정하는 방법 사용했습니다. XP? cscript를

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

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



답변

이것은 명령 행을 통해 배경을 변경합니다. 이것을 박쥐 파일로 저장하십시오. 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

답변

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

RUNDLL32.EXE user32.dll,UpdatePerUserSystemParameters

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

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


답변

하나의 옵션이 있습니다. 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] );
                }
            }
        }
    }

답변

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


답변

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

답변

특히 사진이 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를 사용하여 동일한 방법을 사용할 수 있습니다


답변

아무리 노력해도 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