Для позиций в стиле гаджета попробуйте использовать небольшой фрагмент, который я сделал:
$Poistion = 'RightBottom'
$Coordinates = switch ($Poistion)
{
'LeftTop' { 0, 0 }
'LeftBottom' { 0, $([System.Windows.Forms.Screen]::PrimaryScreen.WorkingArea.Bottom - $Form.Height) }
'RightTop' { $([System.Windows.Forms.Screen]::PrimaryScreen.WorkingArea.Width - $Form.Width), 0 }
'RightBottom' { $([System.Windows.Forms.Screen]::PrimaryScreen.WorkingArea.Width - $Form.Width), $([System.Windows.Forms.Screen]::PrimaryScreen.WorkingArea.Bottom - $Form.Height) }
}
$Form.Location = New-Object System.Drawing.Point($Coordinates)
Чтобы сохранить форму в момент, когда вы активируете «Показать рабочий стол», установите для свойства TopMost
значение * 1005.* и MinimizeBox
свойство до $False
.Например:
$Form.TopMost = $True
$Form.MinimizeBox = $False
Когда вы нажимаете Show Desktop
или используете его горячую клавишу (Win+D
), Windows пытается отправить команду Minimize All
запущенным приложениям.После сворачивания всех окон, которые можно свернуть, он берет рабочий стол и «поднимает» его до верха стека окон, чтобы другие окна его не закрывали.
Вы также можете попытаться использовать события определения размера.Вот так:
$Form_Resize={
$Form.WindowState = 'Normal'
}
$Form.add_Resize($Form_Resize)