Powershell - получить статус слайд-шоу Win 7

Краткое резюме вопроса: в Windows 7, используя Powershell или небольшой C#, как мы можем определить, будет ли пользовательская тема оставлять одно изображение или делать слайд-шоу в фоновом режиме?

(Связанные вопросы, но не совсем то же самое и без ответа:

Связанный ресурс, но не помог:

)

Вопрос в том, как это звучит, и я не уверен, почему у него так много проблем.

В Win8 я могу использовать технику, основанную на посте Энди ( скрипт Powershell от ярлыка для смены рабочего стола), чтобы получить исходное изображение. Отсюда и из того, что я могу сказать, слайд-шоу всегда заканчивается в TranscodedWallpaper.jpg, и как только вы переходите к одному изображению, оно переключается на имя изображения. Так что немного об, но я могу сказать, если слайд-шоу включено

В Win7 я могу проверить WallpaperSource

Get-ItemProperty 'HKCU:\Software\Microsoft\Internet Explorer\Desktop\General' WallpaperSource

но это дает мне текущее изображение, только если есть слайд-шоу, и если мы используем "Custom.theme", то

Get-ItemProperty -path 'HKCU:Control Panel\Desktop' -name 'Wallpaper' 

каждый раз возвращает TranscodedWallpaper.jpg, даже если там осталось только одно изображение и нет временного интервала. (Независимо от того, если я использую вышеупомянутую команду или сценарий Энди)

Я попытался запустить Process Monitor, чтобы выяснить, что делает Windows, и он немного играет в 'C:\Windows\Globalization\MCT\MCT-US\Wallpaper\desktop.ini', но, похоже, не оставляет следов Я могу использовать. Это помогло мне найти

Get-ItemProperty -path 'HKCU:Control Panel\Personalization\Desktop Slideshow'

у которого есть поля Shuffle и Interval, но они не меняются, когда мы находимся в пользовательской теме - отдельное изображение против пользовательской темы - слайд-шоу.

Я уверен, что мне не хватает очень очевидного (быть новичком в игре на этом конце Windows и Powershell)... какие-нибудь мысли?

1 ответ

Потребовалось время, но я понял это (или нашел решение). Если кто-то еще сталкивается с этим, Win 7 имеет INI-файл:

C:\Users\[...]\AppData\Roaming\Microsoft\Windows\Themes\slideshow.ini

Когда в "слайд-шоу" есть только одно изображение, этот файл становится пустым, поэтому использование.WallpaperSource является правильным фоновым изображением. Когда в слайд-шоу есть несколько изображений, этот файл имеет содержимое (информацию о переходе фона), поэтому, даже если.WallpaperSource выглядит как правильное изображение, оно, вероятно, будет меняться со временем в зависимости от интервала.

Короче говоря, из того, что я вижу (и пока я не столкнусь с ситуацией, которая нарушает это правило, и я вернусь к чертежной доске), чтобы проверить, есть ли у вас слайд-шоу:

$doesFileExist = Test-Path $PATH_TO_THE_INI_FILE
if ($doesFileExist){
    $iniContent = Get_Content $PATH_TO_THE_INI_FILE
    if ($iniContent){
       # This was a slideshow
    }
    else {
       # This does not seem to be a slideshow
    }
}

(Это, конечно, только для встроенной функциональности Windows 7, не знаю, как она отреагирует на весь пользовательский код и приложения). И решение Win 8 в первоначальном вопросе

Другие вопросы по тегам