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

Ответить
Аватара пользователя
Bio_Hazard

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

Сообщение Bio_Hazard »

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

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

Сообщение Kazun »

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
Аватара пользователя
Bio_Hazard

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

Сообщение Bio_Hazard »

Kazun, спасибо! Первый скрипт работает отлично!!!

Есть 2 вопроса:

1) можно ли его подредактировать, что бы он открывал еще *.jpeg *.png *.gif

2) Картинки нужно подкорректировать по размерах или они сами масштабируются?
Аватара пользователя
Bio_Hazard

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

Сообщение Bio_Hazard »

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
Аватара пользователя
Bio_Hazard

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

Сообщение Bio_Hazard »

Цитата Bio_Hazard:



2) Картинки нужно подкорректировать по размерах или они сами масштабируются?
Любой язык - [решено] Смена обоев рабочего стола




При желании можно и масштабировать, и обрезать, и растягивать и много чего ещё. Это касаемо манипуляций над самими изображениями, помимо настроек, указанных коллегой Kazun.
Ответить

Вернуться в «Скриптовые языки администрирования Windows»