Quelle clé de registre ou fichier Windows détermine l'emplacement des moniteurs dans un environnement multi-moniteurs?

17

J'ai un ordinateur portable avec un adaptateur USB vers VGA qui me permet d'ajouter un troisième moniteur à mon ordinateur portable (le deuxième moniteur utilise la fente intégrée).

Cela fonctionnait bien sur Windows Vista - vous pouviez accéder aux paramètres d'affichage de Windows et Windows reconnaîtrait le troisième moniteur et vous laisserait le faire glisser en conséquence. Avec Windows 7, le troisième moniteur n'est littéralement pas là dans les paramètres d'affichage de Windows. Le pilote vous permet d'afficher sur le troisième moniteur, mais vous ne pouvez pas vous déplacer où il se trouve. Les paramètres d'affichage sont mal placés par rapport à mes deux autres (si vous faites glisser des fenêtres dessus, ils se retrouvent en bas quand il doit être aligné).

J'ai appelé le support technique et ils ont dit qu'il n'y avait pas encore de pilote avec cette fonctionnalité pour Windows 7. Mais voici mon intuition. L'emplacement du moniteur est toujours quelque peu similaire à celui que je l'avais sur Vista, il est juste à environ 500 pixels environ. Je pense qu'il y a une clé de registre ou un fichier de pilote quelque part qui indique à ce moniteur où exister. Si je pouvais juste modifier le nombre et le faire monter de 500 pixels, ce serait au bon endroit et je n'aurais pas à attendre 6 mois pour que la société sorte un nouveau pilote.

Des idées?

Gaffe
la source

Réponses:

8

Découvrez les différentes clés et dossiers dans

HKEY_CURRENT_CONFIG\System\CurrentControlSet\Control\Video

Plus précisément dans le plus profond des MonXXXXXXXsous-dossiers doivent être Attach.RelativeXet les Attach.RelativeYvaleurs qui sont l'emplacement de moniteurs par rapport au pixel 0,0.

Étrangement, lorsque je vérifie une machine Windows 7 ici avec deux moniteurs, cela ne semble pas montrer le deuxième moniteur. Mais ma machine XP montre les trois à moi, donc votre kilométrage peut varier.

Si rien d'autre, c'est un point de départ!

Ƭᴇcʜιᴇ007
la source
Super trouvaille! C'est exactement les clés que je cherchais. La modification de la valeur relativeY à deux endroits, puis le redémarrage du pilote USB de bureau étendu entraîne son décalage. Voici maintenant le problème restant: En raison de la façon dont les moniteurs sont configurés, je dois mettre une valeur NÉGATIVE. Comment ferais-je ça? Mettre une valeur positive ne fait que baisser le moniteur dont j'ai besoin. Voici ma configuration: 2 3 1 Ce sont les numéros de moniteur (1 et 2 se touchent et trois est sur le côté). Changer la valeur attach.relativeY fait que 3 semble aller encore plus bas, je veux l'augmenter.
On dirait que la mise en forme n'a pas été conservée, mais j'espère que vous obtenez l'essentiel - 2 est au-dessus de 1 et trois est à droite des deux, centré entre les deux. Numériquement, Windows le place à côté du moniteur 1.
Que se passe-t-il lorsque vous essayez d'entrer une valeur négative? En fin de compte, vous devrez peut-être truquer un script de démarrage pour effectuer l'ajustement lorsque vous vous connectez (si cela ne va pas rester de lui-même).
Ƭᴇcʜιᴇ007
Vous ne pouvez pas entrer de valeur négative, Windows ne vous le permettra pas. Dans la partie hexidécimale du registre, vous pouvez mettre des chiffres et des lettres et dans la partie décimale, vous ne pouvez mettre que des valeurs numériques. Ce chiffre de 4 milliards que j'ai publié fonctionne et colle, je ne sais pas pourquoi. Peut-être qu'il y a une sorte de code dans les fenêtres qui signifie que le 429496xxxx indique un nombre négatif. Les 4 derniers chiffres correspondent à la quantité de déplacement des pixels au-delà du négatif.
Sweeeeeeeet. ;)
Ƭᴇcʜιᴇ007
27

Pour tous ceux qui recherchent la clé dans Windows 7, elle se trouve dans l'un des dossiers de:

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

Recherchez Position.cxet Position.cydans chacun des sous-dossiers; vous devez modifier la chaîne hexadécimale.

Convertisseur binaire / décimal / hexadécimal:

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

Sean
la source
3
Comment savez-vous quelle configuration est la configuration active?
Adisak
Adisak - J'ai trouvé plus facile de simplement changer les valeurs en fonction de toutes les positions.
Artanis
1
@Adisak Ancienne question, mais pour tous ceux qui recherchent toujours ceci, voici ce que j'ai fait: Clic droit -> exporter le nœud de configuration (juste au cas où), enregistrez-le quelque part. Supprimez chaque nœud enfant unique. Déconnectez-vous des fenêtres. Reconnectez-vous. Cela créera 1 nouvel élément qui est l'actuel / actif.
René
Pour trouver la configuration active, vous pouvez utiliser MonitorInfoView . Les noms de configuration sont des listes de tous les identificateurs de moniteur joints *, les identificateurs commenceront par les valeurs de la colonne de clé de registre dans MonitorInfoView.
gronostaj
4

Je souhaite savoir pourquoi cela a fonctionné, mais je sais que cela fonctionne:

Pour que le moniteur monte (car les négatifs ne sont pas autorisés par le registre), vous devez utiliser des valeurs pour attach.relativeY comme ceci: 4294967040

Merci à ce forum pour avoir aidé à comprendre cette partie - http://www.ureader.com/msg/164488.aspx

Si vous modifiez les 4 derniers chiffres de ce nombre, le moniteur descend et vice-versa. Cela fonctionnera également pour attach.relativeX. Un petit ajustement et ma configuration est revenue à la normale.

Qui a besoin de pilotes fonctionnels pshh


la source
et merci à techie007 de m'avoir mis sur la bonne voie
Doux, est-ce que j'obtiens la «bonne réponse» pour pointer la clé? :)
Ƭᴇcʜιᴇ007
Pouvez-vous faire une demi-bonne réponse? lol
Seulement si je peux vous donner un demi-point pour votre question ouverte. :) Pour moi, il semble que vous ayez demandé "des idées" sur la façon de résoudre ce problème en utilisant "une clé de registre ou un fichier de pilote quelque part" - j'ai souligné une clé de registre que vous avez ensuite utilisée pour la définir. Que veux-tu de plus? Du sang? :) Je suppose que je devrai inclure des leçons négatives sur les nombres hexadécimaux de 32 bits dans ma prochaine réponse. ;)
Ƭᴇcʜιᴇ007
En effet, il s'agit de la représentation entière positive d'un entier négatif. Recherchez le complément de 2 si vous souhaitez savoir comment représenter le nombre négatif, puis traitez les bits comme un entier non signé pour obtenir la valeur d'entrée correcte.
Edwin Buck
2

Soustrayez le montant que vous souhaitez rendre négatif de 4294967296 pour obtenir le nombre dont vous avez besoin pour le registre. C'est-à-dire, pour 4294967296 - 250 = 4294967046.

Pour vous les geeks ...

L'ennui ici est dû au fait que l'éditeur de registre n'interprète pas les 32 bits comme autre chose qu'un entier décimal non signé ou une représentation hexadécimale de données binaires. Cependant, lorsque Windows récupère ces données binaires lors du positionnement de vos écrans, il les interprète comme un entier signé. Pour que Windows sache qu'un entier signé 32 bits est négatif, il définit le dernier bit sur 1 (le plus à gauche) et le reste des bits est inversé. Donc -1 aura une valeur binaire de 11111111 11111111 11111111 11111111 (hex: FF FF FF FF). Si vous traduisez cela en un entier décimal non signé (comme le fait l'éditeur de registre), vous obtenez 4 294 967 295. Donc, pour nos besoins, 0 équivaut à 4 294 967,

dynamichael
la source
1

Au lieu de calculer des valeurs négatives, il peut être plus facile de comprendre si vous gardez toutes les valeurs positives en créant un 0,0 logique en haut à gauche physique d'une boîte virtuelle que vous dessinerez si vous essayez d'entourer tous les moniteurs. Pensez comme lorsque vous déplacez un moniteur vers le haut et vers la gauche, que vous poussez vraiment les autres vers la droite et vers le bas.

Par exemple, j'avais un moniteur 1280x1024 et 1920x1200 avec le premier plus petit par défaut sur le côté supérieur droit du second, et non en bas à gauche du premier où il est physiquement positionné (à gauche) et s'aligne avec (le bord inférieur est à la même hauteur , le sommet est bien sûr plus bas car il n'est pas aussi haut).

Donc, pour commencer, le deuxième moniteur 1920x1080 était en position 0,0 et le premier en 1920,0. Au lieu d'essayer de calculer négatif - (1920 + 1280), (1200 - 1024) pour le premier moniteur, je mets simplement le premier moniteur à toutes les valeurs positives 0, (1200 -1024) et le second à 1280, 0.

La déconnexion de Windows, puis la reconnexion ont appliqué les paramètres pour moi. Il est également utile de savoir que cela fonctionne sur Windows Hyper-V Server (je viens de le faire sur 2012 R2, ce qui signifie que ces paramètres fonctionnent toujours sous Windows 8 et 8.1). C'est vraiment utile pour les personnes exclues des paramètres de résolution d'écran mais essayant d'obtenir un PC hôte de style "bare metal" (vous n'avez presque jamais besoin de mettre à jour ou de redémarrer) et de travailler uniquement avec des machines virtuelles à l'intérieur via Remote Desktop (copiez cela à partir d'une autre machine ).

Merci à techie007 pour la réponse originale, c'était la clé pour résoudre tout cela. Si vous marquez cette variante utile, n'oubliez pas de "monter" sa réponse et la question aussi.

Tony Wall
la source