Powershell - изменение фона Windows 7 для изображения с веб-сайта - PullRequest
2 голосов
/ 15 декабря 2011
set-itemproperty -path "HKCU:Control Panel\Desktop" -name WallPaper -value Zapotec.bmp

Я нашел этот код в сети для Powershell для Windows 7, однако хочу, чтобы обои были настроены на файл, сохраненный на веб-сервере, доступном из браузера.как бы я поступил так.

Ответы [ 3 ]

2 голосов
/ 17 декабря 2011

Я попытался изменить обои с помощью вашей команды, но это не сработало, пока я не запустил: rundll32.exe user32.dll, UpdatePerUserSystemParameters. Даже тогда это работало только с перерывами (это известная проблема в Win7).

В любом случае, я написал функцию getfile для PowerShell, которая загружает исходный URL на диск.

function getfile($url, $filename)
{
    $wc = New-Object System.Net.WebClient

    Register-ObjectEvent -InputObject $wc -EventName DownloadProgressChanged -SourceIdentifier WebClient.DownloadProgressChanged -Action { Write-Progress -Activity "Downloading: $($EventArgs.ProgressPercentage)% Completed" -Status $url -PercentComplete $EventArgs.ProgressPercentage; }

    Register-ObjectEvent -InputObject $wc -EventName DownloadFileCompleted -SourceIdentifier WebClient.DownloadFileComplete -Action { Write-Host "Download Complete - $filename"; Unregister-Event -SourceIdentifier WebClient.DownloadProgressChanged; Unregister-Event -SourceIdentifier WebClient.DownloadFileComplete; }

    try
    {
        $wc.DownloadFileAsync($url, $filename)
    }
    catch [System.Net.WebException]
    {
        Write-Host("Cannot download $url")
    } 
    finally
    {   
        $wc.Dispose()
    }
}

Вы можете найти его и более простую версию здесь вместе с подробным описанием того, что он делает.

Вы должны иметь возможность менять обои с помощью такой вещи:

$url = "http://fc05.deviantart.net/fs30/f/2008/062/9/4/Serenity_WPP3___1920_Preview_by_nuaHs.jpg"
$filename = "d:\serenity.jpg"
getfile $url $filename
set-itemproperty -path "HKCU:Control Panel\Desktop" -name WallPaper -value $filename
rundll32.exe user32.dll, UpdatePerUserSystemParameters
1 голос
/ 16 декабря 2011

Я думаю, у вас есть 2 варианта.

  1. Сделайте, чтобы Powershell загрузил файл локально и использовал p / invoke для вызова функции SystemParametersInfo в User32.dll для установки обоев. API установит его и активирует изменение немедленно. Вот пример этого.

  2. Используйте тему обоев RSS. Вы можете отредактировать файл .theme и указать свой собственный URL-адрес RSS, однако URL-адрес фида должен содержать элемент мультимедиа для изображений, например , этот . Вы можете загрузить этот файл темы и отредактировать его с помощью URL своего RSS-канала.

1 голос
/ 15 декабря 2011

Я почти уверен, что ты не сможешь этого сделать.Изображения обоев должны храниться локально.Если щелкнуть правой кнопкой мыши изображение в браузере и «установить в качестве обоев», оно копируется на жесткий диск.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...