2014-12-19 24 views
2

我想做一個我認爲會是一個簡單的腳本從一個給定的目錄中選擇一個隨機文件,並將其設置爲Windows 8上的鎖屏圖像不幸的是,它看起來並不像Windows直接暴露任何東西,直接觸摸PowerShell來觸摸鎖屏。 我從堆棧溢出這個問題開始,call-windows-runtime-classes-from-powershell看起來像他開始與我有同樣的最終目標,但線程並沒有進入如何實際設置圖像。從PowerShell調用Windows運行時類 - 窗口8鎖屏切換器

有了更多搜索,我發現這個鏈接How to change Lockscreen using JS in win8 app這讓我開始了正確的道路我還發現了關於如何改變鎖屏的Javascript,C#,C++和VB的例子msdn,但我只是不能弄清楚如何在Powershell中實現。

挑選一個隨機圖像很簡單:

$wallpaper = Get-ChildItem $Path2wallpaper 
$NewWPimage = $wallpaper[(Get-Random -Maximum ($wallpaper.count))].FullName 

什麼我卡上是如何實際設置圖像。看一切我能找到我認爲下面的代碼應該工作,如果我知道如何將$NewWPimage轉換爲.Net流?

[Windows.System.UserProfile,Windows.System.UserProfile,ContentType=WindowsRuntime] 
[Windows.System.UserProfile.LockScreen]::SetImageStreamAsync($img1) 

如果有人能更好地解釋我如何使用這些.NET對象的工作,或者至少所需的代碼從具有文件路徑(即c轉到:\ Users \用戶名\壁紙\ newImage.jpg )將該文件設置爲鎖定屏幕那將會非常棒。對不起,我的編程術語很不錯,所以請原諒我,如果我使用錯誤的條款。

回答

0

從缺乏迴應來看,它看起來像使用WinRT類一定很難。不過,我確實找到了一種不同的方式來使用powershell以編程方式更改Windows 8中的鎖定屏幕。

感謝Will over在powershell.org我發現在Windows 8/8.1中有一個用戶級鎖定屏幕和一個系統級鎖定屏幕。可以在註冊表項中設置系統級鎖定屏幕圖像,並且可以使用註冊表項來禁用用戶級別鎖定屏幕,這會使系統鎖定屏幕成爲全局鎖定屏幕。查看eightforums.com瞭解更多詳情。

所以這裏是我設計一個隨機鎖屏的代碼。

$wallpaper = Get-ChildItem $Path2wallpaper 
$NewWPimage = $wallpaper[(Get-Random -Maximum ($wallpaper.count))].FullName 
$RegPath = "HKLM:\SOFTWARE\Policies\Microsoft\Windows\Personalization" 
if (Test-Path -Path $RegPath) 
{ 
    Set-ItemProperty -Path $RegPath -Name LockScreenImage -Value $NewWPimage 
} 
else 
{ 
    New-Item -Path $RegPath -Type Directory 
    New-ItemProperty -Path $RegPath -Name NoChangingLockScreen -PropertyType DWORD -Value 1 
    New-ItemProperty -Path $RegPath -Name LockScreenImage -PropertyType String -Value  $NewWPimage 
}