Windowsでスクリプトからデスクトップの背景を設定するにはどうすればよいですか?


14

X Windowsでは、ルートウィンドウ(背景)の色を赤に変更するクールな「サイレントアラーム」リマインダースクリプトがありました。 XP?

私はcscriptを使用してレジストリキーを設定するある種のスケジュールされたタスクを考えています(HKEY_CURRENT_USER\Control Panel\Desktop)。しかし、私の試みは効果がないようです。これらのレジストリエントリを読み取り、デスクトップを再描画するために何を通知する必要がありますか?

回答:


8

これにより、コマンドラインから背景が変更されます。これをbatファイルとして保存するだけです。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更新する前に削除する必要がある場合があります。
ミシェル

6

レジストリの壁紙設定を変更したら、単に実行する必要があると思います

RUNDLL32.EXE user32.dll,UpdatePerUserSystemParameters 

コマンドラインから変更を有効にします。画像がbmpファイルであることを確認する必要があります。

実際、デスクトップサイズのbmpファイルをすべて赤で作成して、これを試しました。// HKCU / control panel / desktop / wallpaperキーを変更して、このビットマップへのフルパス名を含めました。コマンドラインから上記のコマンドを実行すると、デスクトップが作成したばかりの赤いbmpに変わりました


私は画像を削除するためにうまく動作しますが、「HKCU \ Control Panel \ Colors \ Background」で背景色を変更しようとしても、それを行いません。
ピーターハーンドルフ

4

1つのオプションがあります。SharpDevelopで小さなコンソールアプリを作成します。このコードをPrograms.csに配置します。アプリを「CWP」と呼びます。壁紙を変更します。コマンドラインで必要なパラメータは、ファイル名のみです。Windows 7 Ultimate 64ビットで.bmpファイルを使用してテスト済み。

    /*
     * 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:\ Users \ 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を使用して同じ方法を使用できます

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.