Vì vậy, ... Tôi đang sử dụng Windows 7. Hiện tại, những thứ sau đây dường như đang hoạt động với tôi:
Trước tiên, bạn muốn thiết lập trình chiếu như bạn muốn, sau đó đi và lưu bản sao lưu của tệp
%USERPROFILE%\AppData\Roaming\Microsoft\Windows\Themes\slideshow.ini
Theo như tôi có thể nói, điều này mã hóa đường dẫn thư mục album. Có thể có một cách để xây dựng của riêng bạn, nhưng tại thời điểm này tôi không biết.
Tôi đang sử dụng powershell. Quyền hạn của tôi làm như sau:
Xác định chức năng để đặt hình nền dựa trên mã ở đây :
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 lpvPara, int fuWinIni);
public static void SetWallpaper (string path) {
SystemParametersInfo(SetDesktopWallpaper, 0, path, UpdateIniFile | SendWinIniChange);
RegistryKey key = Registry.CurrentUser.OpenSubKey("Control Panel\\Desktop", true);
//"Fit" style
key.SetValue(@"WallpaperStyle", "6");
key.SetValue(@"TileWallpaper", "0");
key.Close();
}
}
}
"@
[Wallpaper.Setter]::SetWallpaper("C:\My\Cool\Pics\monkey.jpg")
Tổng mã có thể quá dài, nhưng ý chính như sau:
Đặt hình nền từ hình ảnh để trình chiếu
- Đặt đường dẫn Hình nền thành "" bằng cách sử dụng chức năng trên
- Sao chép
slideshow.initập tin sao lưu trở lại vào thư mục đó
Stop-process -name explorer
- Ngủ 1 giây và chỉ khởi động trình thám hiểm nếu nó không tự động khởi động lại
Đặt hình nền từ trình chiếu sang hình ảnh duy nhất
- Xóa hai tệp sau nếu chúng tồn tại:
~ \ AppData \ Roaming \ Microsoft \ Windows \ Themes \ slideshow.ini
~ \ AppData \ Roaming \ Microsoft \ Windows \ Themes \ TranscodingImage.jpg
- Đặt đường dẫn hình nền bằng chức năng trên
Stop-process -name explorer
- Ngủ 1 giây và chỉ khởi động trình thám hiểm nếu nó không tự động khởi động lại
Về mã hóa slideshow.initệp: theo cuộc trò chuyện diễn đàn này , trường được mã hóa là "cấu trúc PCIDLIST_ABSOLUTE". Tôi chưa xem xét điều này nhưng có lẽ ai đó có thể tìm ra cách tạo ra chúng.
Về việc giết thám hiểm. Phải mất vài giây trên máy của tôi để trình thám hiểm khởi động trình chiếu sau khi khởi động lại nhưng theo như tôi có thể nói nó dường như hoạt động ổn định. Tôi đã thử một vài lựa chọn thay thế nhưng tôi không thể tìm ra cách nào sạch hơn để làm mới màn hình nền và lấy các cài đặt mới. Tôi có thể thấy trong SysIternals procmon khi explorer.exe đọc một số mục đăng ký có liên quan. Có vẻ như đó là trong quá trình khởi động hoặc sau khi khởi tạo khay hệ thống.
Tôi không biết làm thế nào xấu thám hiểm bán thường xuyên cho hệ thống của bạn. Có lẽ nó rất tệ? Nếu bạn tìm thấy một cách tốt hơn, xin vui lòng chia sẻ. :)