Я работаю над приложением на своем телефоне, которое автоматизирует многие аспекты моего домашнего компьютера. Одним из таких аспектов является переключение между work
средой и home
средой. Переключение между ними в основном заключается в изменении конфигураций монитора (но также и вывода звука, если это возможно).
К моему компьютеру подключено три монитора, и в моей work
среде я хочу, чтобы активными были только мониторы 1 и 2... но в home
среде я хочу, чтобы монитор 3 был единственным активным монитором.
Я боролся с поиском способа автоматизировать это. Я пробовал несколько разных инструментов, включая несколько из пакета NirSoft (MonitorInfoTool и MultiMonitorTool). Однако у каждого найденного мной инструмента есть один серьезный недостаток: идентификаторы либо не уникальны (т. е. они меняются каждый раз, когда я меняю конфигурацию монитора), либо они просто совершенно неверны.
MonitorInfoTool: часто путает два монитора, заявляя, что активны мониторы 1 и 3, когда на самом деле активны мониторы 2 и 3 (я знаю, что это нежелательная конфигурация, но я ее обманул).
MultiMonitorTool: Не имеет уникального идентификатора. Ближайший из них — идентификаторы \\.\DISPLAYX, которые, по-видимому, назначаются случайным образом при изменении конфигурации монитора. Этот инструмент также имеет функцию загрузки/сохранения конфигурации монитора, но я обнаружил, что она часто не работает.
После некоторых исследований выяснилось, что это в первую очередь проблема Windows 7. Microsoft просто не удосужилась создать простой способ идентификации мониторов для других программ.
Кто-нибудь смог надежно переключаться между конфигурациями мониторов в Windows 7? Кто-нибудь смог надежно сопоставить какой-либо идентификатор для переключения (например, \\.\DISPLAYX id) с понятным (или полупонятным) именем в Windows 7?