Создайте папку в диске D под названием oboi. Внутри нее создайте простой текстовый документ. Скопируйте и вставьте туда этот текст:
$folderPath = "D:\oboi"
if (-Not (Test-Path -Path $folderPath)) {
Write-Host "The specified folder does not exist."
exit
}
Write-Host "Contents of the folder:"
Get-ChildItem -Path $folderPath | ForEach-Object { Write-Host $_.Name }
$images = Get-ChildItem -Path $folderPath | Where-Object { $_.Extension -match '^\.(png|jpg|jpeg|bmp)$' -and $_.PSIsContainer -eq $false } | Sort-Object Name
if ($images.Count -eq 0) {
Write-Host "No images found in the specified folder."
exit
}
Write-Host "Found $($images.Count) images in the folder."
$indexFilePath = "D:\oboi\index.txt"
if (-Not (Test-Path -Path $indexFilePath)) {
Set-Content -Path $indexFilePath -Value 0
}
Add-Type -TypeDefinition @"
using System;
using System.Runtime.InteropServices;
public class Wallpaper {
public const int SetDesktopWallpaper = 20;
public const int UpdateIniFile = 0x01;
public const int SendWinIniChange = 0x02;
[DllImport("user32.dll", CharSet = CharSet.Auto)]
private static extern int SystemParametersInfo (int uAction, int uParam, string lpvParam, int fuWinIni);
public static void SetWallpaper(string path) {
SystemParametersInfo(SetDesktopWallpaper, 0, path, UpdateIniFile | SendWinIniChange);
}
}
"@
$changeCount = 0
while ($true) {
$currentIndex = [int](Get-Content -Path $indexFilePath)
$image = $images[$currentIndex]
$imagePath = $image.FullName
Write-Host "Selected image: $imagePath"
[Wallpaper]::SetWallpaper($imagePath)
Write-Host "Wallpaper changed to: $imagePath"
$currentIndex = ($currentIndex + 1) % $images.Count
Set-Content -Path $indexFilePath -Value $currentIndex
$changeCount++
if ($changeCount -eq 6) {
exit
}
Start-Sleep -Seconds 10
}
Теперь сохраните, и поменяйте название и расширение текстового файла на oboi.ps1. На что обратить внимание в коде? $folderPath = "D:\oboi" - папку в диске D с названием oboi закиньте свои копии обоев и одного "особенного". Start-Sleep -Seconds 10 - менять картинку каждые 10 секунд. if ($changeCount -eq 6) - что бы скрипт не ушел в бесконечность, через 1 минуту (6 раз по 10 секунд) скрипт остановится. Если вы вообще нулевые в коде(как и я) лучше тут ничего не трогать, а если хочется что бы реже показывалась "особенная" картинка, просто увеличивайте количество копий фотографии в папке.
2. Теперь, создайте еще один текстовый файл и вставьте туда этот код -
Set objShell = CreateObject("WScript.Shell")
Set objFSO = CreateObject("Scripting.FileSystemObject")
If objFSO.FileExists("D:\oboi\oboi.ps1") Then
objShell.Run "powershell.exe -NoProfile -WindowStyle Hidden -File ""D:\oboi\oboi.ps1""", 0, True
Else
WScript.Echo "Script file not found."
End If