답변:
이것은 명령 행을 통해 배경을 변경합니다. 이것을 박쥐 파일로 저장하십시오. 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] );
}
}
}
}
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
HKCU\Control Panel\Desktop\TranscodedImageCache
업데이트하기 전에 제거 해야 할 수도 있습니다 .