मैं स्क्रिप्ट से विंडोज पर डेस्कटॉप पृष्ठभूमि कैसे सेट करूं?


14

एक्स विंडोज पर मेरे पास एक शांत 'मूक-अलार्म "रिमाइंडर स्क्रिप्ट थी जो मेरी रूट विंडो (पृष्ठभूमि) रंग को ठोस लाल में बदल देगी, बस कुछ सेकंड के लिए इसे बदलने से पहले कुछ सेकंड के लिए। क्या विंडोज के लिए ऐसा करने का कोई तरीका है। XP?

मैं किसी प्रकार के निर्धारित कार्य के बारे में सोच रहा हूँ जो रजिस्ट्री कुंजियों को सेट करने के लिए cscript का उपयोग करता है HKEY_CURRENT_USER\Control Panel\Desktop। हालाँकि मेरी कोशिशों का कोई असर नहीं दिख रहा है। मुझे उन रजिस्ट्री प्रविष्टियों को पढ़ने और डेस्कटॉप को फिर से खींचने के लिए क्या संकेत देना है?

जवाबों:


8

यह पृष्ठभूमि को कमांड लाइन के माध्यम से बदलता है। बस इसे बैट फाइल के रूप में सेव करें। Bmp का उपयोग करें या आपको ताज़ा करना होगा। इसके अलावा वॉलपेपर बढ़ाया जा करने के लिए सेट करता है। यदि आप वॉलपेपरस्टाइल लाइन को बाहर निकालते हैं तो यह स्वचालित रूप से केंद्रित हो जाएगा।

@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अपडेट करने से पहले आपको हटाना पड़ सकता है ।
21

क्या वॉलपेपर को स्थानीय कंप्यूटर पर होना चाहिए या यह नेटवर्क पर एक अलग कंप्यूटर पर हो सकता है जैसे \\ server \ share \ wallpaper.bmp?
रिकार्डो बोहनेर

6

मुझे लगता है कि एक बार जब आप रजिस्ट्री में वॉलपेपर सेटिंग को संशोधित करते हैं, तो आपको बस चलाने की आवश्यकता होती है

RUNDLL32.EXE user32.dll,UpdatePerUserSystemParameters 

कमांड लाइन से और परिवर्तन प्रभावी होने चाहिए। आपको यह सुनिश्चित करने की आवश्यकता है कि आपकी छवि एक bmp फ़ाइल है।

वास्तव में, मैंने अभी-अभी एक डेस्कटॉप आकार की bmp फाइल बनाकर यह कोशिश की थी जो सभी लाल रंग की थी। मैंने इस बिटमैप में पूर्ण पथनाम समाहित करने के लिए // HKCU / नियंत्रण कक्ष / डेस्कटॉप / वॉलपेपर कुंजी को बदल दिया। मैंने कमांड लाइन से ऊपर की कमांड को चलाया और डेस्कटॉप लाल bmp में बदल गया जो मैंने अभी बनाया था


मेरे लिए छवि को हटाने के लिए ठीक काम करता है, लेकिन जब मैंने "HKCU \ Control Panel \ Colors \ Background" में बैकग्राउंड का रंग बदलने की कोशिश की, तो वह ऐसा नहीं करता।
पीटर हैन्डॉर्फ

4

यहाँ एक विकल्प है। SharpDevelop के साथ एक छोटा कंसोल ऐप बनाएं। इस कोड को Programs.cs में डालें। मैं एप्लिकेशन को "सीडब्ल्यूपी" कहता हूं; वॉलपेपर बदल दो। यह कमांड लाइन पर सिर्फ एक पैरामीटर लेता है: फ़ाइल नाम। .Bmp -file के साथ विंडोज 7 अल्टीमेट 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

विंडोज 7 के लिए, यह प्रतिबंधित क्षेत्रों में भी काम करता है !! ;) के साथ अपनी छवि स्थान पथ बदलें

C: \ Users \ 1509967 \ डेस्कटॉप \ 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 प्रारूप में नहीं है, तो आप मेरे तरीके को आजमा सकते हैं। यह केवल उस तस्वीर को खोलता है जिसे आप विंडोज़ फोटो व्यूअर का उपयोग करके चाहते हैं और चित्र को अपने डेस्कटॉप वॉलपेपर के रूप में सेट करने के लिए एक कीबोर्ड शॉर्टकट का उपयोग करें।

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 (यहां तक ​​कि बड़े छोरों के साथ) के साथ वॉलपेपर को मज़बूती से नहीं बदल सकता, इसलिए मैंने पावरशेल का उपयोग करके समाप्त किया, यह हर बार काम करता है।

Https://www.joseespitia.com/2017/09/15/set-wallpaper-powershell-function/ देखें

सेट- 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 केवल विशिष्ट तरीके चलाता है।
जोरीक
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.