Какой раздел реестра или файл Windows определяет расположение мониторов в среде с несколькими мониторами?

17

У меня есть ноутбук с адаптером USB-VGA, который позволяет мне добавить третий монитор к моему ноутбуку (второй монитор использует встроенный слот).

В Windows Vista все работало нормально - вы можете перейти к настройкам дисплея Windows, и Windows распознает третий монитор и позволит перетаскивать его соответствующим образом. В Windows 7 третий монитор буквально отсутствует в настройках дисплея Windows. Драйвер позволяет отображать на третьем мониторе, но вы не можете двигаться туда, где он есть. Настройки дисплея смещены относительно двух других (если вы перетаскиваете окна к нему, они оказываются внизу, когда он должен быть выровнен).

Я позвонил в техподдержку, и они сказали, что пока нет драйвера с такой функциональностью для Windows 7. Но вот моя догадка. Расположение монитора все еще немного похоже на то, что было у меня в Vista, оно примерно на 500 пикселей или около того. Я думаю, что где-то есть либо ключ реестра, либо файл драйвера, который сообщает этому монитору, где он существует. Если бы я мог просто изменить число и увеличить его на 500 пикселей, это было бы в нужном месте, и мне не пришлось бы ждать 6 месяцев, пока компания выпустит новый драйвер.

Есть идеи?

багор
источник

Ответы:

8

Проверьте различные ключи и папки в

HKEY_CURRENT_CONFIG\System\CurrentControlSet\Control\Video

Конкретно в самых внутренних MonXXXXXXXподпапках должны быть Attach.RelativeXи Attach.RelativeYзначения, по которым расположены мониторы относительно пикселя 0,0.

Странно, когда я проверяю машину с Windows 7 здесь с двумя мониторами, кажется, что второй монитор не отображается. Но моя машина XP показывает все три из моих, поэтому ваш пробег может отличаться.

Если ничего другого, это место для начала!

Ƭᴇcʜιᴇ007
источник
Отличная находка! Это именно те ключи, которые я искал. Изменение относительного значения Y в двух местах и ​​последующий перезапуск расширенного настольного USB-драйвера вызывает его смещение. Теперь вот остальная проблема: из-за того, как настроены мониторы, мне нужно указать отрицательное значение. Как бы я это сделал? Ввод положительного значения только ставит монитор мне нужно еще ниже. Вот мои настройки: 2 3 1 Это номера мониторов (1 и 2 касаются, а три смещены в сторону). При изменении значения attach.relativeY значение 3 становится еще ниже, я хочу повысить его.
похоже, форматирование не сохранилось, но, надеюсь, вы понимаете суть - 2 выше 1 и три справа от них обоих, по центру между ними. В цифровой
Что происходит, когда вы пытаетесь ввести отрицательное значение? В конце вам, возможно, придется настроить скрипт запуска, чтобы выполнить корректировку при входе в систему (если он не будет работать самостоятельно).
Ƭᴇcʜιᴇ007
Вы не можете ввести отрицательное значение, окна не позволят вам. В шестнадцатеричной части реестра вы можете поместить цифры и буквы, а в десятичной части вы можете только числовые значения. Это 4-миллиардное число, которое я разместил, определенно работает и не работает, я просто не знаю почему. Возможно, в Windows есть какой-то код, который означает, что 429496xxxx обозначает отрицательное число. Последние 4 числа соотносятся с количеством смещения пикселей за минусом.
Sweeeeeeeet. ;)
Ƭᴇcʜιᴇ007
27

Для любого, кто ищет ключ в Windows 7, он находится в одной из папок в:

HKLM\SYSTEM\CurrentControlSet\Control\GraphicsDrivers\Configuration\

Ищите Position.cxи Position.cyв каждой из подпапок; Вы должны редактировать шестнадцатеричную строку.

Двоичный / десятичный / шестнадцатеричный преобразователь:

http://www.mathsisfun.com/binary-decimal-hexadecimal-converter.html

Шон
источник
3
Как сказать, какая конфигурация активная?
Адисак
Adisak - мне было проще просто менять значения во всех позициях.
Артанис
1
@ Adisak Старый вопрос, но для тех, кто все еще ищет это, вот что я сделал: Щелкните правой кнопкой мыши -> экспортируйте узел конфигурации (на всякий случай), сохраните его где-нибудь. Удалить каждый дочерний узел. Выйти из окон. Войдите в систему. Это создаст 1 новый элемент, который является текущим / активным.
Рене
Чтобы найти активную конфигурацию вы можете использовать MonitorInfoView . Имена конфигурации - это списки всех идентификаторов монитора, с которыми они связаны *, идентификаторы будут начинаться со значений из столбца ключа реестра в MonitorInfoView.
Гроностай
4

Я хотел бы знать, почему это работает, но я знаю, что это делает:

Чтобы заставить монитор работать (поскольку негативы не разрешены реестром), вы должны использовать значения для attach.relativeY, например: 4294967040

Спасибо этому форуму за помощь в выяснении этой части - http://www.ureader.com/msg/164488.aspx

Если вы измените последние 4 цифры этого номера вниз, монитор погаснет, и наоборот. Это также будет работать для attach.relativeX. Немного подправил, и мои настройки вернулись к норме.

Кому нужны функциональные драйверы пшх


источник
и спасибо techie007 за то, что вы выбрали меня на правильный путь
Милый, я получаю оценку «правильный ответ» за указание ключа? :)
Ƭᴇcʜιᴇ007
Можете ли вы сделать половину правильного ответа? lol
Только если я могу дать вам пол-очка за ваш открытый вопрос. :) Мне кажется, вы спросили «какие-либо идеи» о том, как вы могли бы это исправить, используя «ключ реестра или файл драйвера где-нибудь» - я указал на ключ реестра, который вы затем использовали для его установки. Что вы еще хотите? Кровь? :) Думаю, мне придется включить в свой следующий ответ отрицательные уроки по шестнадцатеричным числам из 32-битных слов. ;)
Ƭᴇcʜιᴇ007
Это потому, что это положительное целое представление отрицательного целого. Посмотрите дополнение 2, если вам интересно знать, как представлять отрицательное число, а затем обработайте биты как целое число без знака, чтобы получить правильное входное значение.
Эдвин Бак
2

Вычтите сумму, которую вы хотите сделать отрицательной, из 4294967296, чтобы получить число, необходимое для регистрации. Т.е. для 4294967296 - 250 = 4294967046.

Для вас гиков ...

Раздражение здесь вызвано тем, что редактор реестра не интерпретирует 32-битные данные как что-либо, кроме десятичного целого числа без знака или шестнадцатеричного представления двоичных данных. Однако когда Windows получает эти двоичные данные при позиционировании ваших дисплеев, она интерпретирует их как целое число со знаком. Чтобы Windows знала, что 32-разрядное целое число со знаком является отрицательным, она устанавливает последний бит в 1 (крайний левый), а остальные биты инвертируются. Таким образом, -1 будет иметь двоичное значение 11111111 11111111 11111111 11111111 (hex: FF FF FF FF). Если вы переведете это в десятичное целое число без знака (как это делает редактор реестра), вы получите 4 294 967 295. Таким образом, для наших целей 0 соответствует 4 294 967,

dynamichael
источник
1

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

Например, у меня был монитор 1280x1024 и 1920x1200 с первым меньшим, по умолчанию установлен по умолчанию в верхней правой части второго, а не в нижнем левом углу первого, где он физически расположен (слева) и выровнен с (нижний край на той же высоте верх, конечно, ниже, потому что он не такой высокий).

Поэтому для начала второй монитор 1920х1080 находился в положении 0,0, а первый в 1920,0. Вместо того, чтобы пытаться вычислить отрицательные значения - (1920 + 1280), (1200 - 1024) для первого монитора, я просто выставил первый монитор на все положительные значения 0, (1200 -1024), а второй на 1280, 0.

Выход из Windows, затем повторный вход в систему применил настройки для меня. Также полезно знать, что это работает на Windows Hyper-V Server (я только что сделал это на 2012 R2, что означает, что эти настройки все еще работают в Windows 8 и 8.1). Это действительно полезно для людей, заблокированных из-за настроек разрешения экрана, но пытающихся получить хост-компьютер в стиле «голый металл» (вам вряд ли когда-либо придется обновляться или перезагружаться) и работать исключительно с виртуальными машинами внутри с помощью удаленного рабочего стола (скопировать его с другого компьютера). ).

Спасибо techie007 за оригинальный ответ, это был ключ к решению всего этого. Если вы отметите этот вариант как полезный, не забудьте также «ответить» на его вопрос и вопрос.

Тони Уолл
источник