Автоматическая настройка двух мониторов в Vista - PullRequest
5 голосов
/ 27 февраля 2009

Я использую ноутбук в качестве основной рабочей станции. Иногда я работаю над этим один, но значительную часть времени я нахожусь за своим офисным столом и подключаю внешний монитор, чтобы увеличить свое рабочее пространство.

Каждый раз, когда я выполняю это действие, я щелкаю одни и те же диалоговые окна в Windows Vista, чтобы настроить двойной экран и расположить окно. Кажется, это повторяемая задача, которую я мог бы автоматизировать.

Я бы хотел подключить кабель монитора, дважды щелкнуть программу и автоматически настроить монитор.

Какой тип программы может это сделать? Я не нашел много онлайн, который имеет отношение. Я подумываю попробовать скрипт autohotkey или API-интерфейс Windows Accessibility с PowerShell. Эта проблема уже решена?

Пояснение: я специально пытаюсь автоматизировать шаги, которые я использую с помощью мыши, для вызова основных функций в Windows Vista.

  1. Щелкните правой кнопкой мыши на рабочем столе
  2. Выберите Персонализировать в контекстном меню
  3. Нажмите настройки дисплея
  4. Щелкните на мониторе № 2, затем установите флажок «Расширить рабочий стол до этого монитора»
  5. Нажмите и перетащите монитор # 2 слева от монитора # 1
  6. Нажмите OK, чтобы закрыть диалоговое окно
  7. Нажмите Да в следующем всплывающем окне, чтобы принять эти настройки монитора

Обновление: Windows 7 делает это автоматически

Я только что обновился до Windows 7, и он запомнил настройки моего двойного монитора. Я поставил их один раз на работу, как указано выше, затем отключил и работал дома в выходные дни. Я пришел в понедельник утром, загрузился, подключил и чёрт побери! Это просто сработало. Спасибо Windows 7!

Ответы [ 6 ]

1 голос
/ 29 марта 2009

Я не видел ни одной существующей утилиты, которая бы делала это, но было бы довольно легко написать ее с помощью Win32 API. Через эту страницу , EnumDisplayDevices получает список устройств отображения, EnumDisplaySettingsEx получает текущие настройки и ChangeDisplaySettingsEx вносит изменения.

Поле DEVMODE.dmPosition должно содержать виртуальные координаты левого верхнего угла дисплея, при этом основной монитор всегда равен (0,0), а остальные относительно него.

Инструменту потребуется два режима: первый сохраняет текущие настройки в файле конфигурации, а второй применяет настройки из конфигурации. Я бы сохранял / извлекал только индекс устройства отображения, имя и каждое из полей DEVMODE.dm *, упомянутых в документах ChangeDisplaySettingsEx. Текстовая конфигурация позволяет редактировать вручную.

0 голосов
/ 22 марта 2012

Вот я, три года спустя, отвечаю на свой вопрос! Ура !!!

Это легко сценарий с http://www.autohotkey.com

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

#NoEnv  ; Recommended for performance and compatibility with future AutoHotkey releases.
#Warn  ; Recommended for catching common errors.
SendMode Input  ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir%  ; Ensures a consistent starting directory.
#1::
Send {LWin}
WinWaitActive Start menu
Send Adjust Screen Resolution
Send {enter}
WinWaitActive Screen Resolution
ControlClick ComboBox3
Send {PgDn}
Send {Up} ; Select "Show desktop only on 1"
Send {enter}
Sleep 3000 ; workaround - cannot select accept/revert window?
Send {left}
Send {enter} ; accept changes
Return
#2::
Send {LWin}
WinWaitActive Start menu
Send Adjust Screen Resolution
Send {enter}
WinWaitActive Screen Resolution
ControlClick ComboBox3
Send {PgDn}
Send {Up}
Send {Up} ; Select "Extend these displays"
Send {enter}
Sleep 3000 ; workaround - cannot select accept/revert window?
Send {left}
Send {enter} ; accept changes
Return
0 голосов
/ 29 марта 2009

Я верю, что Ultramon действительно будет работать. В контекстном меню на значке Ultramon в системном окне есть команда «отключить / включить вторичную».

Я думаю, вы могли бы просто:

  1. подключите второй монитор
  2. выберите «включить вторичное»
0 голосов
/ 10 марта 2009

Если у вас есть Windows Vista или 7, вы можете нажать windows_key + P. У вас есть куча вариантов для выбора, включая расширение

0 голосов
/ 27 февраля 2009

My Leovo T60p делает это автоматически без каких-либо специальных действий. Попробуйте обновить драйверы видео и проверьте на сайте производителя какие-либо утилиты, которые могут это сделать.

0 голосов
/ 27 февраля 2009

Попробуйте UltraMon для превосходной поддержки двух мониторов. Я годами использую его на разных ноутбуках и десктопах, и он отлично работает. Я использовал только XP, поэтому я не уверен, как она работает с Vista.

...