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

17

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

Funcionou bem no Windows Vista - você poderia acessar as configurações de vídeo do Windows e o Windows reconheceria o terceiro monitor e o arrastaria de acordo. No Windows 7, o terceiro monitor literalmente não existe nas configurações de exibição do Windows. O driver permite que você exiba para o terceiro monitor, mas você não pode se mover para onde ele está. As configurações de exibição estão fora do lugar em relação às minhas outras duas (se você arrastar as janelas para cima, elas terminam na parte inferior quando 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á o 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 existe uma chave de registro ou arquivo de driver em algum lugar que diz ao monitor onde ele existe. Se eu pudesse modificar o número e aumentá-lo para 500 pixels, ele estaria no lugar certo e não preciso esperar seis meses para a empresa lançar um novo driver.

Alguma ideia?

Gaff
fonte

Respostas:

8

Confira as várias chaves e pastas em

HKEY_CURRENT_CONFIG\System\CurrentControlSet\Control\Video

Especificamente no mais interior MonXXXXXXXsub-pastas devem ser Attach.RelativeXe Attach.RelativeYvalores que são localização dos monitores em relação ao pixel de 0,0.

Estranhamente, quando eu verifico uma máquina Windows 7 aqui com dois monitores, ela não parece mostrar o segundo monitor. Mas minha máquina XP mostra todas as minhas três, portanto sua milhagem pode variar.

Se nada mais é um lugar para começar!

Ƭᴇcʜιᴇ007
fonte
Ótima descoberta! São exatamente essas chaves que eu estava procurando. Modificar o valor relativoY em dois locais e, em seguida, reiniciar o driver usb estendido da área de trabalho faz com que ele seja alterado. Agora, aqui está o problema restante: devido à maneira como os monitores são configurados, preciso inserir um valor NEGATIVO. Como eu faria isso? Colocar um valor positivo apenas coloca o monitor que eu preciso ainda mais baixo. Aqui está a minha configuração: 2 3 1 Esses são os números do monitor (1 e 2 estão tocando e três estão ao lado). Alterar o valor de attach.relativeY faz com que 3 pareça diminuir ainda mais, quero aumentá-lo.
parece que a formatação não ficou lá, mas espero que você entenda a essência - 2 está acima de 1 e três está à direita de ambos, centralizados entre os dois. Digital, Windows está colocando-o ao lado de monitorar 1.
O que acontece quando você tenta inserir um valor negativo? No final, talvez você precise manipular um script de inicialização para fazer o ajuste quando efetuar login (se não for por si só).
Ƭᴇcʜιᴇ007
Você não pode inserir um valor negativo, o Windows não permitirá. Na parte hexidecimal do registro, você pode colocar números e letras e, na parte decimal, você pode colocar apenas valores numéricos. Esse número de 4 bilhões que publiquei definitivamente funciona e paus, não sei por que. Talvez haja algum tipo de código no Windows que significa que o 429496xxxx indica um número negativo. Os últimos 4 números se correlacionam com a quantidade de deslocamento de pixel além do negativo.
Sweeeeeeeet. ;)
Ƭᴇcʜιᴇ007
27

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

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

Procure Position.cxe Position.cyem cada uma das subpastas; você precisa editar a sequência hexadecimal.

Conversor binário / decimal / hexadecimal:

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

Sean
fonte
3
Como você sabe qual é a configuração ativa?
Adisak
Adisak - Achei mais fácil mudar de acordo com os valores em todas as posições.
Artanis 31/01
11
@ Adisak Pergunta antiga, mas para quem ainda procura, aqui está o que eu fiz: Clique com o botão direito do mouse -> exporte o nó de configuração (apenas no caso), salve-o em algum lugar. Exclua todos os nós filhos. Saia do windows. Faça login novamente. Isso criará um novo item que é o atual / ativo.
René
Para encontrar a configuração ativa, você pode usar o MonitorInfoView . Os nomes de configuração são listas de todos os identificadores de monitor associados *, os identificadores começarão com valores da coluna Chave do Registro no MonitorInfoView.
Gronostaj
4

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

Para fazer o monitor subir (porque os negativos não são permitidos pelo registro), você deve usar valores para attach.relativeY como este: 4294967040

Obrigado a este fórum por ajudar a descobrir essa parte - http://www.ureader.com/msg/164488.aspx

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

Quem precisa de drivers funcionais pshh


fonte
e graças a techie007 para obter me no caminho certo
Doce, recebo a marca de 'resposta correta' por apontar a chave? :)
Ƭᴇcʜιᴇ007
Você pode fazer metade da resposta correta? lol
Só se eu puder lhe dar meio ponto para sua pergunta em aberto. :) Para mim, parece que você pediu "alguma idéia" sobre como corrigi-lo usando "uma chave do registro ou arquivo de driver em algum lugar" - apontei uma chave do registro que você usou para defini-la. O que mais você quer? Sangue? :) Acho que vou ter que incluir lições negativas de número hexadecimal de palavras de 32 bits na minha próxima resposta. ;)
Ƭᴇcʜιᴇ007
Isso ocorre porque é a representação inteira positiva de um número inteiro negativo. Procure o complemento 2 se você estiver interessado em saber como representar o número negativo e, em seguida, trate os bits como um número inteiro não assinado para obter o valor de entrada correto.
Edwin Buck
2

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

Para vocês, geeks ...

O aborrecimento aqui se deve ao fato de o editor do registro não interpretar os 32 bits como algo além de um número 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 seus monitores, ele os interpreta como um número inteiro assinado. Para que o Windows saiba que um número inteiro assinado de 32 bits é negativo, ele define o último bit como 1 (mais à esquerda) e o restante dos bits é invertido. Portanto, -1 terá um valor binário de 11111111 11111111 11111111 11111111 (hex: FF FF FF FF). Se você converter isso em um número inteiro decimal não assinado (como o editor do Registro), você obterá 4.294.967.295. Portanto, para nossos propósitos, 0 equivale a 4.294.967,

dynamichael
fonte
1

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

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

Então, para começar com o segundo monitor 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, apenas coloquei o primeiro monitor em todos os valores positivos 0, (1200-1024) e o segundo em 1280, 0.

Fazer logoff do Windows e fazer logon novamente aplicou as configurações para mim. Também é útil saber que isso funciona no Windows Hyper-V Server (eu fiz isso no 2012 R2, o que significa que essas configurações ainda funcionam no Windows 8 e 8.1). Isso é realmente útil para pessoas bloqueadas nas configurações de resolução de tela, mas tentando obter um PC host no estilo "bare metal" (você quase nunca precisa atualizar ou reiniciar) e trabalha puramente com máquinas virtuais dentro da Área de Trabalho Remota (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 útil, não esqueça de "responder" a resposta e a pergunta também.

Tony Wall
fonte