PowerShellな小遊びです。
画面いっぱいに半透明なWPFを表示して画面をロックしたように見せかけてみます。
悪用……できないでしょうが、まぁほどほどに節度を…。
コード全文
Function Show-LockScreen{
[CmdletBinding()]
param(
[int]
$Sleep,
[string]
$Context="このロックスクリーンはPowerShellで描かれています! $sleep 秒待ってね♡",
[string]
$LabelColour = 'Indigo',
[string]
$BackgroundColour = "#88AA55",
[double]
[ValidateScript({($_ -le 1.0) -and ($_ -gt 0)})]
$Opacity = 0.4
)
begin
{
try
{
$label = New-Object Windows.Controls.Label
}
catch
{
}
$label.Content = $Context
$label.FontSize = 60
$label.FontFamily = 'Consolas'
$label.Background = 'Transparent'
$label.Foreground = $LabelColour
$label.HorizontalAlignment = 'Center'
$label.VerticalAlignment = 'Center'
try
{
$window = New-Object Windows.Window
}
catch
{
}
$Window.AllowsTransparency = $True
$Window.Opacity = $Opacity
$window.WindowStyle = 'None'
$window.Background = $BackgroundColour
$window.Content = $label
$window.Left = $window.Top = 0
$window.WindowState = 'Maximized'
$window.Topmost = $true
}
process
{
$window.Show() > $null
Start-Sleep -Seconds $Sleep
$window.Close()
}
end
{
}
}
実行
この一文で。-Sleepには何秒ロックして見せるかを設定します。
-Contextとして"string"を渡せば表示する文字もいじれます。
Show-LockScreen -Sleep 5 -Opacity 0.5 -LabelColour "Indigo" -BackgroundColour "SkyBlue"
こんな感じで。
[office src="
https://skydrive.live.com/embed?cid=D0D99BE0D6F89C8B&resid=D0D99BE0D6F89C8B%21598&authkey=AGQz9e13a_E4xbg" width="318" height="173"]
PowerShellで簡単WPFサンプルでした。
何気に主要部分はこれだけです。
$label = New-Object Windows.Controls.Label
$label.Content = $Context
$label.FontSize = 60
$label.FontFamily = 'Consolas'
$label.Background = 'Transparent'
$label.Foreground = $LabelColour
$label.HorizontalAlignment = 'Center'
$label.VerticalAlignment = 'Center'
$window = New-Object Windows.Window
$Window.AllowsTransparency = $True
$Window.Opacity = $Opacity
$window.WindowStyle = 'None'
$window.Background = $BackgroundColour
$window.Content = $label
$window.Left = $window.Top = 0
$window.WindowState = 'Maximized'
$window.Topmost = $true
$window.Show() > $null
Start-Sleep -Seconds $Sleep
$window.Close()