iNNOKENTIY21

Silver Member | Редактировать | Профиль | Сообщение | Цитировать | Сообщить модератору WinMgrLib — Яндекс Диск Про исходники либы забыл, добавил — WinMgr.srs.zip. + ReadMe.html + ReadMe.md + Справки в скрипты + Исправление вызова некоторых команд (в либе переименовал, в скриптах забыл) LevT Цитата: Про дисплеи понятно, благодарю - но десктопы есть у всех в количествах. Я тоже ими толком не пользуюсь; пришёл к выводу что надо себя заставлять уже. | Не смотрел в сторону «десктопы», не представляю, что и как. Добавлено: В readme не добавил, требуется подтверждение, что примеры рабочие. Мульти-монитор: координаты и WorkingArea Для привязки раскладки к конкретному монитору удобно использовать System.Windows.Forms.Screen. WorkingArea — это рабочая область монитора (без панели задач и закреплённых панелей). Координаты — в «виртуальном рабочем столе», поэтому на левом/верхнем мониторе значения могут быть отрицательными — это нормально. Пример Получить WorkingArea для монитора по индексу и разместить окно на втором мониторе: Код: if (-not ('System.Windows.Forms.Screen' -as [type])) { Add-Type -AssemblyName 'System.Windows.Forms' } $screens = [System.Windows.Forms.Screen]::AllScreens # Посмотреть, какие мониторы видит система $screens | ForEach-Object { [PSCustomObject]@{ DeviceName = $_.DeviceName Primary = $_.Primary Bounds = $_.Bounds WorkingArea = $_.WorkingArea } } | Format-Table -AutoSize $ScreenId = 1 # 0 — обычно основной, 1 — второй и т.д. $wa = $screens[$ScreenId].WorkingArea $hWnd = .\New-Process.ps1 -CommandLine 'notepad.exe' .\Set-WindowPosition.ps1 -hWnd $hWnd -Left $wa.Left -Top $wa.Top -Width $wa.Width -Height $wa.Height | Пример «по центру» выбранного монитора (например, второго): Код: $ScreenId = 1 $wa = $screens[$ScreenId].WorkingArea $Width = [int]($wa.Width / 1.2) $Height = [int]($wa.Height / 1.2) $Left = [int]($wa.Left + ($wa.Width - $Width) / 2) $Top = [int]($wa.Top + ($wa.Height - $Height) / 2) $hWnd = .\New-Process.ps1 -CommandLine 'notepad.exe' .\Set-WindowPosition.ps1 -hWnd $hWnd -Left $Left -Top $Top -Width $Width -Height $Height | |