Làm cách nào để thay đổi album trình chiếu hình nền theo chương trình?


7

Hệ điều hành tôi đang sử dụng là Windows 10. Tôi muốn thay đổi album cho hình nền màn hình và trình chiếu màn hình khóa bằng cách sử dụng tập lệnh hoặc các phương tiện lập trình khác. Tôi đã xem xét việc thay đổi regeditcài đặt nhưng tôi không thể tìm thấy bất cứ thứ gì trong regeditthư mục album được tham chiếu trực tiếp.

Cho đến nay tôi đã xem HKEY_CURRENT_USER\Control Panel\Desktopvà thấy rằng hình nền hiện tại được lưu trữ %APPDATA%\Microsoft\Windows\Themes\TranscodedWallpapervà các yếu tố của trình chiếu được mã hóa trong slideshow.iniđó là một tập tin ẩn trong thư mục đó.

Một lần nữa tôi muốn tìm cách thay đổi chương trình này.


Đó là cái gì bạn đang sử dụng? Windows 8, 8.1 hoặc 10?
Mất trí

@Insane Tôi muốn biết làm thế nào để làm điều đó trên tất cả các hệ điều hành. Nhưng ít nhất một là một khởi đầu tốt.
Ricky Barillas

Bạn nên chỉ định hiện tại bạn đang sử dụng và nếu bạn nhận được câu trả lời được chấp nhận không hoạt động trên hệ điều hành khác, bạn nên hỏi một câu hỏi mới với thông tin này.
Mất trí

Tôi đang sử dụng Windows 10.
Ricky Barillas

Câu trả lời:


3

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

  1. Đặt đường dẫn Hình nền thành "" bằng cách sử dụng chức năng trên
  2. Sao chép slideshow.initập tin sao lưu trở lại vào thư mục đó
  3. Stop-process -name explorer
  4. 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

  1. 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
  1. Đặt đường dẫn hình nền bằng chức năng trên
  2. Stop-process -name explorer
  3. 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ẻ. :)

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.