Que chave de registro ou arquivo do Windows determina onde os monitores são colocados em um ambiente com vários monitores?

14

Eu tenho um laptop com adaptador USB para VGA que me permite adicionar um terceiro monitor ao meu laptop (o segundo monitor usa o slot onboard).

Funcionou bem no Windows Vista - você podia entrar nas configurações de exibição do Windows e o Windows reconheceria o terceiro monitor e permitiria arrastá-lo de acordo. Com o Windows 7, o terceiro monitor literalmente não está presente nas configurações de exibição do Windows. O driver permite exibir o terceiro monitor, mas você não pode se mover para onde ele está. As configurações de exibição estão equivocadas em relação às minhas outras duas (se você arrastar as janelas até elas, elas acabarão na parte inferior quando elas devem estar alinhadas).

Liguei para o suporte técnico e eles disseram que ainda não há um driver com essa funcionalidade para o Windows 7. Mas aqui está meu palpite. O posicionamento do monitor ainda é um pouco semelhante ao que eu tinha no Vista, é apenas cerca de 500 pixels ou mais. Eu acho que há uma chave de registro ou arquivo de driver em algum lugar que está dizendo a este monitor onde existe. Se eu pudesse apenas modificar o número e movê-lo para 500 pixels, ele estaria no lugar certo e eu não tenho que esperar 6 meses para a empresa sair com um novo driver.

Alguma idéia?

    
por 3498DB 09.02.2010 / 18:11

5 respostas

8

Confira as várias chaves e pastas em

HKEY_CURRENT_CONFIG\System\CurrentControlSet\Control\Video

Especificamente nas subpastas MonXXXXXXX mais internas, deve haver Attach.RelativeX e Attach.RelativeY valores que são a localização dos monitores em relação ao pixel 0,0.

Estranhamente quando eu verifico uma máquina com Windows 7 aqui com dois monitores, não parece mostrar o segundo monitor. Mas minha máquina XP mostra todos os meus três, então sua milhagem pode variar.

Se nada mais é um lugar para começar!

    
por 09.02.2010 / 18:43
24

Para quem está procurando a chave no Windows 7, ela está em uma das pastas em:

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

Procure Position.cx e Position.cy em cada uma das subpastas; você tem que editar a string hexadecimal.

Conversor binário / decimal / hexadecimal:

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

    
por 03.07.2010 / 20:19
4

Eu gostaria de saber por que isso funcionou, mas sei que:

Para fazer com que o monitor suba (porque os negativos não são permitidos pelo registro), você precisa usar valores para attach.relativeY desta forma: 4294967040

Obrigado a este fórum por ajudar a descobrir essa parte - link

Se você alterar os últimos 4 dígitos desse número para baixo, o monitor diminuirá e vice-versa. Isso também funcionará para attach.relativeX. Um pouco de ajustes e minha configuração voltou ao normal.

Quem precisa de drivers funcionais pshh

    
por 10.02.2010 / 08:06
1

Subtraia o valor que você deseja tornar negativo de 4294967296 para obter o número necessário para o registro. Ou seja, para 4294967296 - 250 = 4294967046.

Para você geeks ...

O incômodo aqui é devido ao fato de que o editor de registro não interpreta os 32 bits como algo diferente de um inteiro decimal não assinado ou uma representação hexadecimal de dados binários. No entanto, quando o Windows recupera esses dados binários ao posicionar suas exibições, ele o interpreta como um inteiro assinado. Para que o Windows saiba que um inteiro assinado de 32 bits é negativo, ele define o último bit como 1 (mais à esquerda) e o restante dos bits é invertido. Então -1 terá um valor binário de 11111111 11111111 11111111 11111111 (hex: FF FF FF FF). Se você traduzir isso em um inteiro decimal não assinado (como o editor de registro), você obtém 4.294.967.295. Portanto, para nossos propósitos, 0 equivale a 4.294.967.296, ao qual você pode simplesmente adicionar seu número negativo para obter o inteiro decimal não assinado necessário para o editor de registro salvar em formato binário e que o sistema interpretará posteriormente como um número inteiro assinado negativamente .

    
por 15.01.2013 / 02:11
1

Em vez de calcular valores negativos, pode ser mais fácil entender se você mantiver todos os valores positivos fazendo um valor lógico 0,0 na parte superior esquerda física de uma caixa virtual que desenharia se tentasse cercar todos os monitores. Pense como quando você move um monitor para cima e para a esquerda, que você está realmente empurrando os outros para a direita e para baixo.

Por exemplo, eu tinha monitor de 1280x1024 e 1920x1200, com o primeiro menor assumindo o lado superior direito do segundo, não o canto inferior esquerdo do primeiro onde está fisicamente posicionado (à esquerda) e alinhado (a borda inferior é na mesma altura, o topo é mais baixo, claro, porque não é tão alto).

Então, para começar, o segundo monitor de 1920x1080 estava na posição 0,0 e o primeiro, em 1920,0. Em vez de tentar calcular negativo - (1920 + 1280), (1200 - 1024) para o primeiro monitor, coloquei o primeiro monitor em todos os valores positivos 0, (1200 -1024) e o segundo em 1280, 0.

Fazer logoff do Windows e, em seguida, fazer o logon novamente aplicou as configurações para mim. Também é útil saber que isso funciona no Windows Hyper-V Server (acabei de fazer isso em 2012 R2, o que significa que essas configurações ainda funcionam no Windows 8 e 8.1). Isso é realmente útil para pessoas bloqueadas das configurações de resolução de tela, mas tentando obter um PC host estilo bare (você quase nunca precisa atualizar ou reinicializar) e trabalhar exclusivamente com máquinas virtuais dentro via Remote Desktop (copie isso de outra máquina ).

Graças a techie007 pela resposta original, essa foi a chave para resolver tudo isso. Se você marcar esta variante como útil, não esqueça de "aumentar" a resposta dele e a pergunta também.

    
por 26.09.2013 / 09:37