2017-04-03 1 views
0

Bonjour je suis en train de faire un petit script pour changer mon fond d'écran à chaque fois donné j'ai un dossier dans lequel les images sont le nom 1.bmp, 2.bmp etcChanger le papier peint powershell

i fait ce script mais il ne fonctionne pas du tout

PS D:\Téléchargements\images\Wallpapers> for($i=1; $i -le 6; $i++){ 
>> reg add "HKEY_CURRENT_USER\Control Panel\Desktop" /v Wallpaper /t REG_SZ 
/d D:\Téléchargements\images\Wallpapers\$i.bmp /f 
>> Start-Sleep -s 10 
>> rundll32.exe user32.dll, UpdatePerUserSystemParameters 
>> Start-Sleep -s 2 
>> } 

quelqu'un peut-il expliquer pourquoi s'il vous plaît :(

PS: les valeurs-sommeil de départ sont totalement aléatoires et ici pour tester

+1

-vous obtenez des erreurs? Si c'est vrai, que sont-ils? Si non, que voyez-vous arriver (ou ne pas se produire)? Si vous souhaitez obtenir de l'aide pour le dépannage d'un script, vous devez fournir autant d'informations que possible. S'il vous plaît voir [Comment poser une bonne question] (http://stackoverflow.com/help/how-to-ask) –

+0

En outre, vous pouvez trouver [cette page de La Vache Agreable] (http: //www.theagreeablecow. com/2014/09/set-desktop-wallpaper-using-powershell.html) d'intérêt. –

+0

Je n'ai aucun message d'erreur, seulement "Opération réussie" toutes les 10 secondes mais mon fond d'écran ne change pas –

Répondre

1

Cela devrait résoudre le problème (vérifié dans la victoire 10):

reg add "HKEY_CURRENT_USER\Control Panel\Desktop" /v Wallpaper /t REG_SZ /d h:\Quotefancy-1542-3840x2160.jpg /f 
Start-Sleep -s 10 
rundll32.exe user32.dll, UpdatePerUserSystemParameters, 0, $false 

ou vous pouvez utiliser win32 api comme ceci:

$setwallpapersrc = @" 
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", SetLastError = true, 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); 
} 
} 
"@ 
Add-Type -TypeDefinition $setwallpapersrc 
[wallpaper]::SetWallpaper("h:\Quotefancy-1542-3840x2160.jpg")