Lịch trình thay đổi hình nền Windows XP mà không cần ứng dụng bổ sung


5

Lý tưởng nhất là tôi muốn có thể thực hiện điều này thông qua tệp bó hoặc tập lệnh VB, vì vậy tôi có thể lên lịch để chạy vào các thời điểm khác nhau trong ngày (hình nền tối vào ban đêm so với hình nền sáng vào ban ngày).

Tôi biết nhiều ứng dụng có thể làm điều này, nhưng tôi chỉ muốn giữ các ứng dụng cần thiết chạy trong nền.

Câu trả lời:


6

Bạn có thể sử dụng các tác vụ theo lịch trình cùng với VBScript này tôi vừa hack (đây là để sử dụng nhiều hình nền và chuyển đổi cứ sau vài phút):

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

Lưu ý : Hình nền phải là bitmap. Nếu bạn muốn tránh thêm kịch bản để kiểm tra thời gian hệ thống theo định kỳ, bạn có thể sử dụng cùng một kịch bản cho đêm và ngày chỉ cần thực hiện một tác vụ theo lịch trình riêng biệt và chạy nó vào thời gian mong muốn trong khoảng thời gian mong muốn. Tạo 2 thư mục, một cho hình nền ban ngày và một cho hình nền ban đêm, đặt một bản sao của tập lệnh trong mỗi. Bạn sẽ cần thay đổi 100dòng 3 thành tuy nhiên có nhiều hình nền trong mỗi dòng và đổi tên chúng thành Wallpaper1, Wallpaper2, etctập lệnh này để hoạt động (hoặc sửa đổi tên trong tập lệnh). Cũng sửa đổi CurrentDirgiá trị cho mỗi.

Nếu bạn chỉ muốn sử dụng 2 hình nền (đặt nó chạy mỗi 59 phút hoặc lâu hơn để đảm bảo bạn không bỏ lỡ một giờ nào):

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

Câu trả lời toàn diện, rất tốt. Cảm ơn, John.
nhấp nhô

3

EDIT: Câu trả lời của John cho bạn thấy một kịch bản đầy đủ. +1 của tôi thuộc về anh ấy. Bài đăng này trở thành một lựa chọn khác mà bạn có thể muốn xem xét.

Tôi hơi khó tính với các lệnh bó nên tôi sẽ cung cấp cho bạn những điểm nổi bật:

%TIME:~0,2% - sẽ cung cấp cho bạn giờ hiện tại trong biến môi trường TIME của bạn

Vì vậy, một cái gì đó như thế này:

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

Sẽ đủ để một tập lệnh được đặt trong bộ lập lịch tác vụ của bạn và được đặt để chạy cứ sau 1 giờ. Tất nhiên, bạn có thể muốn điều chỉnh giờ theo mức độ thoải mái múi giờ của mình. Trong khi đó, các câu lệnh IF được viết để chúng không cần thiết gọi các tệp reg. Nhưng nó có nghĩa là bạn phải thiết lập lịch trình tác vụ của mình để chạy nó ít nhất một lần mỗi giờ.

Đối với các tệp reg, đây là các cài đặt bạn đang theo dõi:

  • HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Chính sách \ Hệ thống \ Hình nền
  • HKEY_CURRENT_USER \ Software \ Microsoft \ Windows \ CurrentVersion \ Chính sách \ System \ WallpaperStyle

Đầu tiên có một đường dẫn đầy đủ đến hình ảnh hình nền. Thứ hai là số nguyên 0 = căn giữa, 1 = lát gạch, 2 = kéo dài.


1
Và btw, kudos cho bạn về việc không muốn thêm các chương trình không cần thiết. Cảm xúc của tôi chính xác.
Một chú lùn

Đóng góp có giá trị cho câu hỏi, cảm ơn Dwarf. :)
nhấp nhô

Tiểu nitlog: Không có TIMEbiến môi trường. Đó là một biến giả chỉ được mở rộng bởi cmd, giống như DATE, CDRANDOM.
Joey

1

Đây là một chương trình VBS nhỏ "sẵn sàng để sử dụng": nó tập hợp tất cả các lệnh đó (lựa chọn tệp hình ảnh ngẫu nhiên trong một thư mục bằng lệnh VBS "Randomize" + làm mới hình nền Windows bằng cách sử dụng "UpdatePerUserSystemParameter" + cập nhật Windows Đăng ký "WallpaperStyle").

Và nó hoạt động với các tệp hình ảnh .JPG (không chỉ với các tệp .BMP), khá tiện lợi ...

Mã nguồn của tập lệnh VB được mô tả tại http://sites.google.com/site/sharerandomwall lề / Cảm ơn.


1

Tôi chỉ cố gắng thêm các gia vị nhỏ vào kịch bản của John. Tôi cố gắng làm cho kịch bản có khả năng thay đổi hình nền mỗi phút một lần theo thời gian trong ngày. Ví dụ: từ 5,00 đến 8,59, nó thay đổi một số hình nền với chủ đề buổi sáng; từ 9.00 đến 13.59, nó thay đổi một số hình nền với chủ đề giữa trưa; và kể từ đó trở đi. Mỗi chủ đề trong kịch bản này chứa 4 hình ảnh BMP. Vì có năm chủ đề được bao gồm trong kịch bản (sáng, trưa, chiều, tối và đêm), sẽ có 20 hình ảnh cần thiết để kịch bản này hoạt động.

'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

Để làm cho tập lệnh này có thể hoạt động, ngoài chính tập tin tập lệnh, 20 hình ảnh BMP cũng cần thiết. Bốn trong số những hình ảnh đó phải được đặt tên theo danh pháp quy định; đó là, ví dụ: morning1.bmp, morning2.bmp, morning3.bmp và morning4.bmp. Danh pháp tương tự cũng được áp dụng cho việc đặt tên của 4 hình ảnh giữa trưa, 4 hình ảnh buổi chiều, 4 hình ảnh buổi tối và 4 hình ảnh đêm. Đặt tệp VBS cùng với 20 tệp hình ảnh trong một thư mục. Vì tập lệnh này liên tục gọi thủ tục của nó theo các khoảng thời gian được chỉ định, khi bạn sử dụng các tác vụ theo lịch trình, hãy chắc chắn rằng bạn chỉ kích hoạt tập lệnh này khi đăng nhập hệ thống. Để hủy kích hoạt tập lệnh này, chỉ cần giết wscript.exe bằng trình quản lý tác vụ.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.