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

Показать сообщение отдельно

Ветеран


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

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


sov44, пробуйте:
читать дальше »
Код: Выделить весь код
Option Explicit

Dim objFSO
Dim objFile

Dim strPath2Wallpapers
Dim strPath2File

Dim objImageFile
Dim objImageProcess

Dim lngScreenHeight
Dim lngScreenWidth

Dim lngDelta


Set objFSO          = WScript.CreateObject("Scripting.FileSystemObject")
Set objImageFile    = WScript.CreateObject("WIA.ImageFile")
Set objImageProcess = WScript.CreateObject("WIA.ImageProcess")

strPath2Wallpapers = objFSO.BuildPath(objFSO.GetSpecialFolder(0).Path, "Web\Wallpaper")

With WScript.CreateObject("htmlfile")
	With .Script.screen
		lngScreenHeight = .Height
		lngScreenWidth  = .Width
	End With
End With

If objFSO.FolderExists(strPath2Wallpapers) Then
	With objFSO.GetFolder(strPath2Wallpapers)
		' Создадим копию папки %SystemRoot%\Web\Wallpaper
		.Copy objFSO.BuildPath(objFSO.GetSpecialFolder(0).Path, "Web\Wallpaper.bak"), True
	
		For Each objFile In .Files
			WScript.Echo objFile.Path
			
			objImageFile.LoadFile objFile.Path
			
			With objImageProcess
				.Filters.Add .FilterInfos("Crop").FilterID
				
				With .Filters(1).Properties
					If lngScreenHeight / lngScreenWidth > objImageFile.Height / objImageFile.Width Then
						' Подрежем справа-слева
						lngDelta = (objImageFile.Width - objImageFile.Height * lngScreenWidth / lngScreenHeight) / 2
						
						.Item("Left")   = lngDelta
						.Item("Right")  = lngDelta
					ElseIf lngScreenHeight / lngScreenWidth < objImageFile.Height / objImageFile.Width Then
						' Подрежем сверху-снизу
						lngDelta = (objImageFile.Height - objImageFile.Width * lngScreenHeight / lngScreenWidth) / 2
						
						.Item("Top")    = lngDelta
						.Item("Bottom") = lngDelta
					Else
						' Nothing to do
					End If
				End With
				
				Set objImageFile = .Apply(objImageFile)
				
				.Filters.Remove 1
			End With
			
			' Перезаписывать существующий файл компонент не умеет,
			' потому предварительно удаляем файл…
			strPath2File = objFile.Path
			objFile.Delete
			
			' Сохраняем файл под тем же именем:
			objImageFile.SaveFile strPath2File
		Next
	End With
Else
	WScript.Echo "Wallpaper's folder [" & strPath2Wallpapers & "] not found"
End If

Set objImageProcess = Nothing
Set objImageFile    = Nothing
Set objFSO          = Nothing

WScript.Quit 0

Копия папки получит имя «Wallpaper.bak».
Это сообщение посчитали полезным следующие участники:

Отправлено: 23:13, 15-05-2012 | #34