Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - [решено] Смена обоев рабочего стола

Ответить
Настройки темы
Любой язык - [решено] Смена обоев рабочего стола

Старожил


Сообщения: 220
Благодарности: 3

Профиль | Отправить PM | Цитировать


Здравствуйте. Хочу сделать, что бы при запуске скрипта на рабочем столе случайным образом менялись обои из папки (например e:\Изображения\Обои для рабочего стола\). Стоит Windows 7 Ultimate. Стандартными средствами реализовано похожее, но там через время, что меня не совсем устраивает. Создавал похожую тему http://forum.oszone.net/showthread.php?p=2507233, но там не ответили. Реально ли это сделать?

Отправлено: 13:15, 14-05-2015

 

Ветеран


Сообщения: 1259
Благодарности: 861

Профиль | Отправить PM | Цитировать


http://poshcode.org/491 - Set-Wallpaper

Код: Выделить весь код
add-type @"
using System;
using System.Runtime.InteropServices;
using Microsoft.Win32;
namespace Wallpaper
{
   public enum Style : int
   {
       Tile, Center, Stretch, NoChange
   }


   public class Setter {
      public const int SetDesktopWallpaper = 20;
      public const int UpdateIniFile = 0x01;
      public const int SendWinIniChange = 0x02;

      [DllImport("user32.dll", SetLastError = true, CharSet = CharSet.Auto)]
      private static extern int SystemParametersInfo (int uAction, int uParam, string lpvParam, int fuWinIni);
      
      public static void SetWallpaper ( string path, Wallpaper.Style style ) {
         SystemParametersInfo( SetDesktopWallpaper, 0, path, UpdateIniFile | SendWinIniChange );
         
         RegistryKey key = Registry.CurrentUser.OpenSubKey("Control Panel\\Desktop", true);
         switch( style )
         {
            case Style.Stretch :
               key.SetValue(@"WallpaperStyle", "2") ; 
               key.SetValue(@"TileWallpaper", "0") ;
               break;
            case Style.Center :
               key.SetValue(@"WallpaperStyle", "1") ; 
               key.SetValue(@"TileWallpaper", "0") ; 
               break;
            case Style.Tile :
               key.SetValue(@"WallpaperStyle", "1") ; 
               key.SetValue(@"TileWallpaper", "1") ;
               break;
            case Style.NoChange :
               break;
         }
         key.Close();
      }
   }
}
"@

Get-ChildItem "e:\Изображения\Обои для рабочего стола\*.jpg" -Recurse  | Get-Random -Count 1  | Foreach {[Wallpaper.Setter]::SetWallpaper( $_.FullName, "NoChange" )}

Set Random Wallpaper on your Desktop using Powershell - https://gallery.technet.microsoft.co...Using-e79e4235
Это сообщение посчитали полезным следующие участники:

Отправлено: 14:05, 14-05-2015 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

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


Старожил


Сообщения: 220
Благодарности: 3

Профиль | Отправить PM | Цитировать


Kazun, спасибо! Первый скрипт работает отлично!!!
Есть 2 вопроса:
1) можно ли его подредактировать, что бы он открывал еще *.jpeg *.png *.gif
2) Картинки нужно подкорректировать по размерах или они сами масштабируются?

Отправлено: 16:35, 14-05-2015 | #3


Ветеран


Сообщения: 1259
Благодарности: 861

Профиль | Отправить PM | Цитировать


1. Get-ChildItem -Path "e:\Изображения\Обои для рабочего стола\*" -Include *.jpeg,*.png,*.gif -Recurse

2. Вместо NoChange, доступно еще 3:Stretch(Растянуть),Center(По центру),Tile(Замостить)

https://msdn.microsoft.com/en-us/lib...(v=vs.85).aspx

Код: Выделить весь код
[Control Panel\Desktop]
Wallpaper=%WinDir%\web\wallpaper\Windows\img0.jpg
; The path to the wallpaper picture can point to a 
; .bmp, .gif, .jpg, .png, or .tif file.

TileWallpaper=0
; 0: The wallpaper picture should not be tiled 
; 1: The wallpaper picture should be tiled 

WallpaperStyle=2
; 0:  The image is centered if TileWallpaper=0 or tiled if TileWallpaper=1
; 2:  The image is stretched to fill the screen
; 6:  The image is resized to fit the screen while maintaining the aspect 
      ratio. (Windows 7 and later)
; 10: The image is resized and cropped to fill the screen while maintaining 
      the aspect ratio. (Windows 7 and later)
Посмотреть, как выглядят различные параметры - http://newdelhipowershellusergroup.b...positions.html
Это сообщение посчитали полезным следующие участники:

Отправлено: 16:46, 14-05-2015 | #4


Старожил


Сообщения: 220
Благодарности: 3

Профиль | Отправить PM | Цитировать


Kazun, Спасибо! Решено.

Отправлено: 20:01, 14-05-2015 | #5


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата Bio_Hazard:
2) Картинки нужно подкорректировать по размерах или они сами масштабируются? »
При желании можно и масштабировать, и обрезать, и растягивать и много чего ещё. Это касаемо манипуляций над самими изображениями, помимо настроек, указанных коллегой Kazun.
Это сообщение посчитали полезным следующие участники:

Отправлено: 09:19, 15-05-2015 | #6



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Скриптовые языки администрирования Windows » Любой язык - [решено] Смена обоев рабочего стола

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Программы - [Персонализация] [3.0]-=смена обоев рабочего стола со спецэффектами=- tweakos Оформление Windows XP 276 30-10-2023 11:31
Интерфейс - [решено] Смена обоев рабочего стола Bio_Hazard Microsoft Windows 7 3 14-05-2015 20:03
Разное - [решено] Удаление истории фонов рабочего стола (обоев) mancunianec Microsoft Windows 7 10 10-10-2011 16:00
Интерфейс - Смена обоев Рабочего стола при каждой загрузке ОС Romdmit Microsoft Windows 2000/XP 4 14-09-2011 23:00
Интерфейс - [решено] Как запретить (разрешить) изменение обоев рабочего стола andrystepa Microsoft Windows 2000/XP 11 02-03-2011 18:42




 
Переход