追加のアプリなしでWindows XPの壁紙の変更をスケジュールする


5

理想的には、バッチファイルまたはVBスクリプトを使用してこれを実行できるようにしたいので、1日のさまざまな時間に実行するようにスケジュールできます(夜間の暗い壁紙と昼間の明るい壁紙)。

これを行うことができる多くのアプリケーションを知っていますが、必要なアプリケーションのみをバックグラウンドで実行し続けることを好みます。

回答:


6

一緒にハックしたばかりのこの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

包括的な答え、非常に良い。ありがとう、ジョン。
下着2009年

3

編集:ジョンの答えはあなたに完全なスクリプトを示しています。私の+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ファイル自体に関しては、これらは後の設定です。

  • HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Policies \ System \ Wallpaper
  • HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Policies \ System \ WallpaperStyle

最初は、壁紙画像へのフルパスを取得します。2番目は整数0 =中央揃え、1 =タイル張り、2 =引き伸ばしです。


1
ところで、不必要なプログラムを追加したくないということは称賛に値します。まさに私の気持ち。
ドワーフ

質問に対する貴重な貢献、Dwarfに感謝します。:)
下着2009年

マイナーな選択:TIME環境変数はありません。これは、とcmd同様に、、だけで展開される疑似変数です。DATECDRANDOM
ジョーイ

1

「すぐに使用できる」小さなVBSプログラムは次のとおりです。すべてのコマンドを収集します(「ランダム化」VBSコマンドを使用してディレクトリ内のランダムな画像ファイルを選択+「UpdatePerUserSystemParameters」を使用してWindows壁紙を更新+ Windowsを更新「WallpaperStyle」レジストリ)。

そして、.JPG画像ファイル(.BMPファイルだけでなく)で動作します。これは非常に便利です...

VBスクリプトのソースコードについては、http: //sites.google.com/site/sharerandomwallpapers/で説明しています。


1

ジョンのスクリプトにマイナーな調味料を追加しようとしています。時刻に応じて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を強制終了します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.