use strict; use warnings; use Win32::API; use Win32::TieRegistry; sub setWPUsingAPI { my($pic) = @_; my $SPI_SETDESKWALLPAPER = 20; my $SPIF_UPDATEANDSENDINI = 3; my $syspinf = Win32::API->new('user32','SystemParametersInfo', 'IIPI', 'I') or die "Could not import function SystemParametersInfo.\n"; $syspinf->Call($SPI_SETDESKWALLPAPER, 0, $pic, $SPIF_UPDATEANDSENDINI); } sub setWPUsingRegistry { my($pic) = @_; $Registry->Delimiter('/'); $Registry->{"HKEY_CURRENT_USER/Control Panel/Desktop//TileWallpaper"} = 1; $Registry->{"HKEY_CURRENT_USER/Control Panel/Desktop//WallpaperStyle"} = 1; $Registry->{"HKEY_CURRENT_USER/Control Panel/Desktop//Wallpaper"} = $pic; } my $wallpaper = $ARGV[0]; setWPUsingAPI($wallpaper); setWPUsingRegistry($wallpaper);