2017-04-03 6 views
0

Hallo Ich versuche, ein kleines Skript zu machen mein Hintergrundbild zu jeder gegebenen Zeit zu ändern ich einen Ordner, in dem die Bilder Name 1.bmp sind, 2.bmp etcändern Tapete Power

ich dieses Skript gemacht aber es funktioniert nicht bei allen

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 
>> } 

kann jemand erklären, warum bitte

PS :(: die Start-Schlaf-Werte völlig zufällig sind und hier für die Prüfung

+1

Sie Fehler bekommen Sie? Wenn ja, was sind sie? Wenn nicht, was passiert (oder passiert nicht)? Wenn Sie Unterstützung bei der Fehlersuche in einem Skript benötigen, müssen Sie so viele Informationen wie möglich bereitstellen. Sehen Sie bitte [Wie man eine gute Frage stellt] (http://stackoverflow.com/help/how-to-ask) –

+0

Auch können Sie [diese Seite von der annehmbaren Kuh] finden (http: //www.theagreeablecow. com/2014/09/set-desktop-wallpaper-using-powershell.html von Interesse. –

+0

Ich habe keine Fehlermeldungen, nur "Operation erfolgreich" alle 10 Sekunden, aber mein Hintergrund ändert sich nicht –

Antwort

1

Das sollte das Problem (eingecheckt win 10) fix:

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 

oder können Sie win32 api wie folgt verwenden:

$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")