Як я можу автоматично змінити зображення блокованого екрана?


0

Я хочу, щоб зображення мого блокування автоматично змінювалося, тому воно буде різним щоразу, коли я входжу в комп’ютер. Мені не подобається параметр слайд-шоу, оскільки він додає ефект панорамування та збільшення, який мене дратує.

Я зробив спробу досягти цього, використовуючи пакетний файл, щоб замінити вибране для мого зображення зображення на інше зображення, однак це не змінює фон блокованого екрана. Навіть дивно, що навіть якщо я вручну змінюю зображення, але зберігаю те саме ім’я, коли я вибираю його в налаштуваннях як зображення блокованого екрана, воно залишатиметься таким, як воно було, коли я вперше вибрав його. Я не знаю, чому це трапляється, чи хтось знає виправлення цього, оскільки, здається, це єдиний спосіб автоматично змінити фон мого екрана блокування.

Я на Windows 10


яка операційна система?
studiohack

Яка операційна система та яка програма блокування екрана, якщо не передбачено ОС? Система, ймовірно, завантажує те, що використовує заблокований екран, або принаймні його настройки, у пам'ять і запускає його звідти, тому зміна специфікацій не вплине на нічого до наступного наступного перезапуску, або закрийте заблокований екран і перезавантажте його.
fixer1234

@ fixer1234 Я на Windows 10, вибачте, я забув сказати це, я додав його до свого початкового повідомлення. Що ви мали на увазі, перезавантаживши заблокований екран?
Етан Гаскойн

@EthanGascoigne Блокуйте сеанс за допомогою меню "Пуск" або комбінації клавіш
Ramhound

@Ramhound Я перевірив, чи спрацювало це, не вдалось, зображення було все одно. Якщо я видаляю вибране вами зображення, а потім розміщую там зовсім інше зображення з такою ж назвою, воно повернеться до вихідного зображення. І якщо я перезавантажую комп'ютер, це все-таки оригінальне зображення, чому він залишається на цьому оригінальному зображенні?
Етан Гаскойн

Відповіді:


0

Як було зазначено в цій іншій відповіді , під час встановлення зображення блокованого екрана Windows копіює вибране зображення у спеціальне місце, тому зміна оригінального файлу не змінить відображену копію. Можливо, є певне кешування за оригінальним іменем файлу, що змушує його не оновлюватись, коли ви перебираєте "той самий" файл зображення. Ознайомлення із значеннями бінарного реєстру, згаданими у цій відповіді, схоже, підтримує ідею, що Windows записує оригінальне ім'я файлу.

Оскільки у вас вже є пакетний сценарій для обертання файлів зображень, все, що нам потрібно зробити, це зробити Windows оновити зображення з файлу поточного фону. Щоб змусити Windows зробити це, ви можете використовувати PowerShell! Збираючи разом фрагменти, які я пояснив у своїй відповіді на подібне запитання і додав певну логіку, щоб кожен раз робити випадкову назву, копію, ми отримуємо цей сценарій:

# Change this to the path where you keep the desired background image
$imagePath = 'C:\path\to\image.ext'

$newImagePath = [System.IO.Path]::GetDirectoryName($imagePath) + '\' + (New-Guid).Guid + [System.IO.Path]::GetExtension($imagePath)
Copy-Item $imagePath $newImagePath
[Windows.System.UserProfile.LockScreen,Windows.System.UserProfile,ContentType=WindowsRuntime] | Out-Null
Add-Type -AssemblyName System.Runtime.WindowsRuntime
$asTaskGeneric = ([System.WindowsRuntimeSystemExtensions].GetMethods() | ? { $_.Name -eq 'AsTask' -and $_.GetParameters().Count -eq 1 -and $_.GetParameters()[0].ParameterType.Name -eq 'IAsyncOperation`1' })[0]
Function Await($WinRtTask, $ResultType) {
    $asTask = $asTaskGeneric.MakeGenericMethod($ResultType)
    $netTask = $asTask.Invoke($null, @($WinRtTask))
    $netTask.Wait(-1) | Out-Null
    $netTask.Result
}
Function AwaitAction($WinRtAction) {
    $asTask = ([System.WindowsRuntimeSystemExtensions].GetMethods() | ? { $_.Name -eq 'AsTask' -and $_.GetParameters().Count -eq 1 -and !$_.IsGenericMethod })[0]
    $netTask = $asTask.Invoke($null, @($WinRtAction))
    $netTask.Wait(-1) | Out-Null
}
[Windows.Storage.StorageFile,Windows.Storage,ContentType=WindowsRuntime] | Out-Null
$image = Await ([Windows.Storage.StorageFile]::GetFileFromPathAsync($newImagePath)) ([Windows.Storage.StorageFile])
AwaitAction ([Windows.System.UserProfile.LockScreen]::SetImageFileAsync($image))
Remove-Item $newImagePath

Змініть шлях зображення у верхній частині сценарію, а потім збережіть сценарій як .ps1файл (наприклад lockscr.ps1) у тій самій папці, що і пакетний файл перетасування зображень. Якщо ви ще цього не зробили, дотримуйтесь інструкцій у розділі Включення скриптів у вікі тегів PowerShell, щоб дозволити запускати сценарії PowerShell. Потім змініть свій пакетний файл, щоб запустити сценарій PowerShell, після того, як буде зроблено переміщення зображень:

powershell -file .\lockscr.ps1

Коментарі не для розширеного обговорення; ця розмова перенесена в чат .
DavidPostill
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.