回答:
一緒にハックしたばかりのこのVBScriptと共に、スケジュールされたタスクを使用できます(これは、たとえば、複数の壁紙を使用し、数分ごとに切り替えるためです)。
Randomize
Set obshell = WScript.CreateObject("Wscript.Shell")
num = Int( ( 100 - 1 + 1 ) * Rnd + 1 )
CurrentDir = "C:\Wallpapers\day\"
wallpaper = CurrentDir & "Wallpaper" & num & ".bmp"
obshell.RegWrite "HKCU\Control Panel\Desktop\Wallpaper",wallpaper
obshell.Run "%windir%\System32\RUNDLL32.EXE user32.dll,
UpdatePerUserSystemParameters",1,False
Set obshell = Nothing
注:壁紙はビットマップでなければなりません。システム時間を定期的にチェックするためにスクリプトを追加するのを避けたい場合、同じスクリプトを昼夜に使用して、個別のスケジュールされたタスクを作成し、希望の時間に希望の間隔で実行できます。昼の壁紙用と夜の壁紙用の2つのフォルダーを作成し、それぞれにスクリプトのコピーを配置します。あなたは変更する必要があります100
多くの壁紙がそれぞれにあるしかしに3行目を、とにそれらの名前を変更しWallpaper1, Wallpaper2, etc
、このスクリプトを動作させるために(またはスクリプトに名前を変更します)。CurrentDir
それぞれの値も変更します。
2つの壁紙のみを使用したい場合(1時間も逃さないように、59分ごとに実行するように設定します):
Set obshell = WScript.CreateObject("Wscript.Shell")
CurrentHour = Hour(Now)
If CurrentHour = 8 Then
wallpaper = "C:\Wallpapers\day.bmp"
ElseIf CurrentHour = 20 Then
wallpaper = "C:\Wallpapers\night.bmp"
Else
WScript.Quit(0)
End If
obshell.RegWrite "HKCU\Control Panel\Desktop\Wallpaper",wallpaper
obshell.Run "%windir%\System32\RUNDLL32.EXE user32.dll,
UpdatePerUserSystemParameters",1,False
Set obshell = Nothing
編集:ジョンの答えはあなたに完全なスクリプトを示しています。私の+1は彼に行きます。この投稿は、あなたが検討したい別のオプションになります。
バッチコマンドが少しさびているので、ハイライトを紹介します。
%TIME:~0,2%
-TIME環境変数で現在の時間を提供します
だからこのようなもの:
IF %TIME:~0,2% == 19 CALL do_Night_Wallpaper.reg
IF %TIME:~0,2% == 07 CALL do_Day_Wallpaper.reg
スクリプトをタスクスケジューラに配置し、1時間ごとに実行するように設定するには十分です。もちろん、タイムゾーンの快適レベルに合わせて時間を調整することもできます。一方、IFステートメントは、regファイルを不必要に呼び出さないように記述されています。ただし、少なくとも1時間に1回実行するようにタスクスケジューラを設定する必要があります。
regファイル自体に関しては、これらは後の設定です。
最初は、壁紙画像へのフルパスを取得します。2番目は整数0 =中央揃え、1 =タイル張り、2 =引き伸ばしです。
TIME
環境変数はありません。これは、とcmd
同様に、、だけで展開される疑似変数です。DATE
CD
RANDOM
「すぐに使用できる」小さなVBSプログラムは次のとおりです。すべてのコマンドを収集します(「ランダム化」VBSコマンドを使用してディレクトリ内のランダムな画像ファイルを選択+「UpdatePerUserSystemParameters」を使用してWindows壁紙を更新+ Windowsを更新「WallpaperStyle」レジストリ)。
そして、.JPG画像ファイル(.BMPファイルだけでなく)で動作します。これは非常に便利です...
VBスクリプトのソースコードについては、http: //sites.google.com/site/sharerandomwallpapers/で説明しています。
ジョンのスクリプトにマイナーな調味料を追加しようとしています。時刻に応じて1分ごとに壁紙を変更できるスクリプトを作成しようとしています。たとえば、5.00から8.59の場合、朝をテーマにしたいくつかの壁紙が変更されます。9.00から13.59に、正午をテーマにしたいくつかの壁紙を変更します。などなど。このスクリプトのすべてのテーマには、4つのBMPイメージが含まれています。スクリプトには5つのテーマ(朝、昼、午後、夕方、夜)が含まれているため、このスクリプトを機能させるには20個の画像が必要です。
'creating procedure that changes wallpaper every minute
Sub ChangeWallpaperPerMinute ()
Set obshell = WScript.CreateObject("Wscript.Shell")
CurrentHour = Hour(Now)
'determining the number of images for every time of the day-based theme (set the 'maximum' value according to the number of images for every theme)
maximum=4
minimum=1
'randomizing the images to be changed
Randomize
num = Int((maximum-minimum+1)*Rnd+minimum)
If CurrentHour >= 5 And CurrentHour <= 8 Then
wallpaper = "morning" & num & ".bmp"
ElseIf CurrentHour >= 9 And CurrentHour <= 13 Then
wallpaper = "midday" & num & ".bmp"
ElseIf CurrentHour >= 14 And CurrentHour <= 16 Then
wallpaper = "afternoon" & num & ".bmp"
ElseIf CurrentHour >= 17 And CurrentHour <= 20 Then
wallpaper = "evening" & num & ".bmp"
ElseIf CurrentHour >= 21 And CurrentHour <= 23 Then
wallpaper = "night" & num & ".bmp"
ElseIf CurrentHour >= 0 And CurrentHour <= 4 Then
wallpaper = "night" & num & ".bmp"
Else
WScript.Quit(0)
End If
obshell.RegWrite "HKCU\Control Panel\Desktop\Wallpaper",wallpaper
obshell.Run "%windir%\System32\RUNDLL32.EXE user32.dll, UpdatePerUserSystemParameters",1,False
Set obshell = Nothing
End Sub
'end of procedure creation'
'calling procedure to initiate script's action
ChangeWallpaperPerMinute
'repeating the calling of procedure
do
WScript.sleep(60 * 1000)
'60 * 1000 means sixty seconds. If the shifting of wallpapers is expected to occur once every ten seconds, change to 10 * 1000
'calling procedure
ChangeWallpaperPerMinute
Loop
このスクリプトを実行可能にするには、スクリプトファイル自体に加えて、20個のBMPイメージも必要です。これらの画像のうち4つは、指定された命名法に従って名前を付ける必要があります。つまり、たとえば、morning1.bmp、morning2.bmp、morning3.bmp、およびmorning4.bmpです。同じ命名法は、4つの正午の画像、4つの午後の画像、4つの夜の画像、4つの夜の画像の命名にも適用されます。VBSファイルと20個の画像ファイルを1つのフォルダーに入れます。このスクリプトは指定された間隔でプロシージャを繰り返し呼び出すため、スケジュールされたタスクを使用する場合は、必ずシステムログオン時にのみこのスクリプトをアクティブにしてください。このスクリプトを無効にするには、タスクマネージャーを使用してwscript.exeを強制終了します。