1

この vbs は XP では問題なく動作しますが、Windows 7 では問題があり、再度ログインしないと壁紙の変更が反映されません。デスクトップをすぐに再描画する方法はありますか? ありがとう

設定 w = WScript.CreateObject("Wscript.Shell")
filePath = "D:\wp.bmp"
w.RegWrite "HKCU\Control Panel\Desktop\Wallpaper", filePath
w.Run "%windir%\System32\RUNDLL32. EXE user32.dll, UpdatePerUserSystemParameters", 1, True

4

1 に答える 1

4

皆さん、ありがとうございます。Powershell pInvoke メソッドは、実際に Web 上で見つけられる唯一の実行可能なソリューションなので、誰かが同じ問題に遭遇した場合に備えて、ここにコピーします。

Add-Type @"
using System;
using System.Runtime.InteropServices;
using Microsoft.Win32;
namespace Wallpaper
{
   public class Setter {
      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 );
         RegistryKey key = Registry.CurrentUser.OpenSubKey("Control Panel\\Desktop", true);
         key.Close();
      }
   }
}
"@

[Wallpaper.Setter]::SetWallpaper('D:\wp1.bmp')
于 2013-11-01T18:21:51.633 に答える