Author Topic: [SCRIPT] Set As Background Wallpaper (Stretched)  (Read 24 times)

total_annihilation00

  • Power Member
  • ****
  • Posts: 157
  • Tech Savant\ Envisioneering
    • View Profile
Useful 'Set As Wallpaper (Stretched)' PowerShell Script I added as a 'Custom Context Menu' since MC doesn't give you the "Set As Background Image" option for instance when in a Flat View (doesn't show up), this custom command will always display though (change the Script FilePath tailored to your own path (remember directory subpaths must be in double slashes)) (To add to Context Menu goto Config > "Custom Context Menu") [Tested on MC 15.8 running Windows 10]:

claude-opus-4-5-20251101-thinking-32k AI Generated::
## Step 1: Fixed PowerShell Script

Save this as `C:\SetWallpaper.ps1`:

```powershell
param([string]$ImagePath)

# Load WinForms so MessageBox works
# Add-Type -AssemblyName System.Windows.Forms

# Debug: Show what path was received (remove this line after testing)
# [System.Windows.Forms.MessageBox]::Show($ImagePath)

Set-ItemProperty -Path 'HKCU:\Control Panel\Desktop' -Name WallpaperStyle -Value '2'
Set-ItemProperty -Path 'HKCU:\Control Panel\Desktop' -Name TileWallpaper -Value '0'

$code = @"
using System;
using System.Runtime.InteropServices;
public class Wallpaper {
    [DllImport("user32.dll", CharSet = CharSet.Auto)]
    public static extern int SystemParametersInfo(int uAction, int uParam, string lpvParam, int fuWinIni);
}
"@

Add-Type -TypeDefinition $code -ErrorAction SilentlyContinue
[Wallpaper]::SystemParametersInfo(20, 0, $ImagePath, 3)
```

---

## Step 2: Corrected MC.Run Command

The issue is likely the variable not expanding properly. Try this (Save this as a User-Defined Command then add it to Config > Custom Context Menu to set the selected file as a Stretched Wallpaper):

```multiscript
@var $imgPath = GetSourceFocusPath();
@var $arguments = "-ExecutionPolicy Bypass -File \"C:\\SetWallpaper.ps1\" -ImagePath \"" + $imgPath + "\"";
MC.Run CMD="powershell.exe" ARG="{$arguments}";
```

---

Notes (if you want other styles later)
These registry values are the ones Windows uses:
  • Stretch: WallpaperStyle=2, TileWallpaper=0 (used above)
  • Fill: WallpaperStyle=10, TileWallpaper=0
  • Fit: WallpaperStyle=6, TileWallpaper=0
  • Center: WallpaperStyle=0, TileWallpaper=0
  • Tile: WallpaperStyle=0, TileWallpaper=1
« Last Edit: Today at 07:33:15 by total_annihilation00 »
~The World's Deceit Has Raped My Soul, We Melt The Plastic People Down Then We Melt Their Plastic Town~