14

В X Windows у меня был классный скрипт напоминания «беззвучный будильник», который менял цвет моего корневого окна (фона) на сплошной красный, всего за несколько секунд, прежде чем снова его менять. Есть ли способ сделать это для Windows XP?

Я думаю, что какая-то запланированная задача, которая использует cscript для установки ключей реестра (HKEY_CURRENT_USER\Control Panel\Desktop). Однако мои попытки, похоже, не имеют никакого эффекта. Что мне нужно сделать, чтобы прочитать эти записи реестра и заново нарисовать рабочий стол?

5 ответов5

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
6

Я думаю, что как только вы измените настройки обоев в реестре, вам просто нужно запустить

RUNDLL32.EXE user32.dll,UpdatePerUserSystemParameters 

из командной строки, и изменения должны вступить в силу. Вы должны убедиться, что ваше изображение является файлом BMP.

На самом деле, я просто попробовал это, создав bmp-файл размером с рабочий стол, который был красным. Я изменил ключ //HKCU / панель управления / рабочий стол / обои, чтобы он содержал полный путь к этому растровому изображению. Я запустил указанную выше команду из командной строки, и рабочий стол изменился на красный bmp, который я только что создал

4

Вот один из вариантов. Создайте небольшое консольное приложение с SharpDevelop. Поместите этот код в Programs.cs. Я называю приложение "CWP"; Сменить обои. Требуется только один параметр в командной строке: имя файла. Протестировано на 64-битной Windows 7 Ultimate с файлом .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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .