- Что вы пробовали?
- Где ваш код, а что не работает?
- Что вы ищете?
Естьмножество классов для проверки практически каждой части Windows и оборудования.
Классы Win32
Get-WMIObject -List |
Where{$_.name -match "^Win32_"} |
Sort Name | Out-Gridview
Ищите те, которые предназначены для видео или монитора
Get-WMIObject -List |
Where{$_.name -match "video|monitor"} |
Sort Name | Out-Gridview
Затем поэкспериментируйте с каждым, пока не увидите, какой из них даст вам то, что вам нужно.
Get-WmiObject win32_desktopmonitor | ft -a
DeviceID DisplayType MonitorManufacturer Name ScreenHeight ScreenWidth
-------- ----------- ------------------- ---- ------------ -----------
DesktopMonitor1 Default Monitor
DesktopMonitor2 (Standard monitor types) Generic PnP Monitor 1080 1920
DesktopMonitor3 Lenovo Wide viewing angle & High density FlexView Display 1920x1080 1080 1920
DesktopMonitor4 (Standard monitor types) Generic PnP Monitor 1080 1920
DesktopMonitor5 Default Monitor
DesktopMonitor6 Default Monitor
Для вашего другого варианта использования отображение всплывающих окон или информации о тостах хорошо задокументировано, и есть модули, которые вы можете загрузить.для этого.
Пример: BurntToast
Модуль для создания и отображения уведомлений о тостах в Microsoft Windows 10.
Вы говорите, что выпытаясь воспроизвести то, что настройки Windows предоставляют как постоянное отображение, как, скажем, BGInfo делает?
Это целый проект, а не простой сценарий.
Обновление для OP
Понятно, и, согласно моему ответу, у меня на ноутбуке 4 монитора, 3 внешних и монитор ноутбука.
Для корреляцииконечно, это означает использование комбинированных результатов из других командлетов / классов.
Пример:
Get-CimInstance -ClassName win32_desktopmonitor |
Select Name, DeviceID, PNPDeviceID |
ft -a
Name DeviceID PNPDeviceID
---- -------- -----------
Default Monitor DesktopMonitor1
Generic PnP Monitor DesktopMonitor2 DISPLAY\ACI27F6\8&5458763&0&UID256
Wide viewing angle & High density FlexView Display 1920x1080 DesktopMonitor3 DISPLAY\LEN4121\4&90CEFB8&0&UID265988
Generic PnP Monitor DesktopMonitor4 DISPLAY\ACI2183\9&2E298509&0&UID256
Default Monitor DesktopMonitor5
Default Monitor DesktopMonitor6
(Get-CimInstance -ClassName Win32_PnPEntity) -match 'monitor' |
Select Name, Manufacturer, HardwareID, PNPDeviceID |
ft -a
Name Manufacturer HardwareID PNPDeviceID
---- ------------ ---------- -----------
Generic PnP Monitor (Standard monitor types) {MONITOR\ACI27F6} DISPLAY\ACI27F6\8&5458763&0&UID256
Generic PnP Monitor (Standard monitor types) {MONITOR\ACI27F6} DISPLAY\ACI27F6\8&5458763&0&UID257
Generic PnP Monitor (Standard monitor types) {MONITOR\ACI2183} DISPLAY\ACI2183\9&2E298509&0&UID256
WAN Miniport (Network Monitor) Microsoft {ms_ndiswanbh} SWD\MSRRAS\MS_NDISWANBH
Тем не менее, даже здесь, это становится странным с сопоставлением PNPDeviceID для идентичных типов мониторов поставщиков.
Опять-таки, вот почему вы спрашиваетеэто настоящий проект.Не просто сценарий.Это означает, что может потребоваться очень глубокое погружение в код C ++, чтобы получить контроль глубины, необходимый для выполнения.Код должен добраться до настроек, драйверов, адаптера для этого.Тогда объедините все это вместе.Это большая работа, а не то, что может быть разумно выполнено в таких вопросах и ответах, как это.
Пример см. В этом Q & A.
EnumDisplayDevices vs WMI Win32_DesktopMonitor, как обнаруживать активные мониторы
То, что вы видите и получаете в настройках Windows, реализовано с помощью нескольких библиотек под DLL (DLL), чтобы сделать это надежно, что высначала нужно научиться потреблять и научиться использовать или писать свои собственные.
Мы все любим нас какой-то PowerShell, но это не ответ на все автономные вопросы.
Сожженный тост будет только всплыватьгде системный трей пристыкован.
Итак, теперь вам нужно написать свою собственную форму (ы) графического интерфейса (WPF) для размещения на любом экране по мере необходимости.