Ek uygulamalar olmadan Windows XP duvar kağıdı değişikliğini zamanlayın


5

İdeal olarak, bir toplu iş dosyası veya VB komut dosyası aracılığıyla bunu yapabilmek istiyorum, bu yüzden günün farklı saatlerinde (geceleri karanlık duvar kağıdı ve gündüz ışık duvar kağıdı) çalışacak şekilde zamanlayabilirim.

Bunu yapabilecek birçok uygulamanın farkındayım, ancak yalnızca gerekli uygulamaları arka planda çalışır durumda tutmayı tercih ediyorum.

Yanıtlar:


6

Sadece birlikte kestiğim bu VBScript ile birlikte zamanlanmış görevleri kullanabilirsiniz (bu, birden fazla duvar kağıdı kullanmak ve örneğin birkaç dakikada bir değiştirmek içindir):

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

Not : Duvar kağıtları bitmapler olmalı. Düzenli aralıklarla sistem saatini kontrol etmek için daha fazla komut dizisinden kaçınmak istiyorsanız, aynı komut dosyasını gece ve gündüz için kullanabilirsiniz, ayrı bir zamanlanmış görev yapın ve istediğiniz zaman istediğiniz aralıkta çalıştırın. Biri günlük duvar kağıtları, biri gece duvar kağıtları için olmak üzere 2 klasör oluşturun. Değiştirmeniz gerekecek 100 3. satırda, ancak her birinde birçok duvar kağıdı bulunur ve bunları yeniden adlandırın. Wallpaper1, Wallpaper2, etc Bu komut dosyasının çalışması için (veya komut dosyasındaki adı değiştirin). Ayrıca değiştirmek CurrentDir her biri için değer.

Yalnızca 2 duvar kağıdı kullanmak istiyorsanız (bir saat kaçırmadığınızdan emin olmak için her 59 dakikada bir çalışacak şekilde ayarlayın):

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

Kapsamlı cevap, çok iyi. Sağol John.
underskor

3

DÜZENLE: John'un cevabı size tam bir senaryo gösteriyor. + 1'im ona gider. Bu yayın, bakmak isteyebileceğiniz başka bir seçenek olabilir.

Toplu komutlarda biraz paslandım, bu yüzden size önemli noktaları vereceğim:

%TIME:~0,2% - TIME ortam değişkeninizdeki geçerli saati size verecek

Yani böyle bir şey:

IF %TIME:~0,2% == 19 CALL do_Night_Wallpaper.reg
IF %TIME:~0,2% == 07 CALL do_Day_Wallpaper.reg

Görev zamanlayıcınıza bir komut dosyasının yerleştirilmesi ve her 1 saatte bir çalışacak şekilde ayarlanması yeterli olacaktır. Elbette, saatleri saat dilimi konfor seviyenize göre ayarlamak isteyebilirsiniz. Bu arada, IF ifadeleri gereksiz yere reg dosyalarını çağırmamak için yazılmıştır. Ancak, görev zamanlayıcınızı en az her saat başı bir kez çalıştırması için ayarlamanız gerekir.

Reg dosyalarının kendileri için, bunlar peşinde olduğunuz ayarlardır:

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

İlki duvar kağıdı görüntüsüne tam yol alır. İkincisi, 0 = ortalanmış, 1 = döşenmiş, 2 = uzatılmış bir tamsayıdır.


1
Ve btw, gereksiz programlar eklemek istemediğiniz için size teşekkür ediyoruz. Tam olarak hislerim.
A Dwarf

Soruya değerli katkı, teşekkürler Cüce. :)
underskor

Küçük nitpick: Yok TIME Çevre değişkeni. Bu sadece tarafından genişletilen bir sözde değişken cmdtıpkı DATE, CD ve RANDOM.
Joey

1

İşte "kullanıma hazır" küçük bir VBS programı: tüm bu komutları toplar ("Randomize" VBS komutunu kullanarak bir dizinde rastgele bir resim dosyasının seçilmesi VBS komutunu kullanarak + Windows duvar kağıdını "UpdatePerUserSystemParameters" kullanarak yenile + + Windows güncelleme "WallpaperStyle" kayıt defteri).

Ve oldukça uygun olan .JPG resim dosyaları (sadece .BMP dosyaları ile), çalışır ...

VB komut dosyası kaynak kodu şurada açıklanmıştır: http://sites.google.com/site/sharerandomwallpapers/ Teşekkürler.


1

Sadece John'un senaryosuna küçük baharatlar eklemeye çalışıyorum. Senaryoyu günün saatine göre her dakika duvar kağıdını değiştirmeye zorlamaya çalışıyorum. Örneğin, 5.00 ile 8.59 arasında, sabah temalı duvar kağıtlarını değiştirir; 9,00'den 13,59'a kadar, gün ortası temalı duvar kağıtlarını değiştirir; ve diğerleri. Bu komut dosyasındaki her tema 4 BMP görüntüsü içerir. Senaryoda yer alan beş tema olduğundan (sabah, öğlen, öğleden sonra, akşam ve gece), bu senaryonun çalışması için gereken 20 resim olacaktır.

'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

Bu betiğin çalışmasını sağlamak için, komut dosyasının kendisine ek olarak, 20 BMP görüntüsü de gerekir. Bu görüntülerden dördü belirtilen terminolojiye göre adlandırılmalıdır; bu, örneğin morning1.bmp, morning2.bmp, morning3.bmp ve morning4.bmp'dir. Aynı terminoloji, 4 öğlen resmi, 4 öğleden sonra resmi, 4 akşam görüntüsü ve 4 gece görüntüsünün isimlendirilmesi için de geçerlidir. VBS dosyasını 20 resim dosyasıyla birlikte bir klasöre yerleştirin. Bu komut dosyası prosedürünü belirtilen aralıklarla tekrar tekrar çağırdığından, zamanlanmış görevleri kullandığınızda, bu komut dosyasını yalnızca sistem oturum açışında etkinleştirdiğinizden emin olun. Bu betiği devre dışı bırakmak için görev yöneticisini kullanarak wscript.exe dosyasını öldürmeniz yeterlidir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.