# This needs to be in the same directory as setwallaper.bat (on system PATH ideally) param ( [string]$path ) # Check if the provided file exists if (-Not (Test-Path $path)) { Write-Host "The file does not exist: $path" exit } # Check if the file is a valid image type (e.g., .jpg, .png) $allowedExtensions = @(".jpg", ".jpeg", ".png", ".bmp") $extension = [System.IO.Path]::GetExtension($path).ToLower() if (-Not ($allowedExtensions -contains $extension)) { Write-Host "Invalid file type. Please use .jpg, .jpeg, .png, or .bmp files." exit } # Define the DllImport method for SystemParametersInfo $code = '[DllImport("user32.dll", CharSet=CharSet.Auto)] public static extern int SystemParametersInfo(int uAction, int uParam, string lpvParam, int fuWinIni);' $method = Add-Type -MemberDefinition $code -Name Wallpaper -Namespace WinAPI -PassThru # Apply the wallpaper and update settings $result = $method::SystemParametersInfo(0x0014, 0, $path, 0x0001 | 0x0002) # Check if it was successful if ($result -eq 0) { Write-Host "Failed to set the wallpaper." } else { Write-Host "Wallpaper set successfully!" }