Используя PowerShell (или любое программное обеспечение), как я могу отобразить идентификационный номер монитора - PullRequest
1 голос
/ 23 марта 2019

В окнах я могу использовать кнопку идентификации на панели управления дисплеем для отображения номера на каждом мониторе, соответствующего их идентификатору в диспетчере отображения Windows.

Могу ли я, предпочтительно с помощью powershell, временно показать эти идентификаторы, как при нажатии на кнопку. Windows display identify button

Если невозможно отобразить идентификатор, как это делает Windows, можно ли будет открыть окно на определенном мониторе?

Моя цель - заставить монитор отображать информацию о себе, либо сопоставляя идентификатор дисплея с информацией WMI, либо показывая окно с текущей информацией о мониторе.

Например, допустим, у меня 4 монитора в матрице 2x2. Все мониторы одинаковых моделей, единственное, что изменится, это серийные номера. Используя WMI, я могу получить информацию о мониторах, но есть ли способ узнать, какой монитор какой физически?

1 Ответ

0 голосов
/ 23 марта 2019
  1. Что вы пробовали?
  2. Где ваш код, а что не работает?
  3. Что вы ищете?

Естьмножество классов для проверки практически каждой части 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) для размещения на любом экране по мере необходимости.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...