Jaki klucz rejestru lub plik systemu Windows określa, gdzie monitory są umieszczane w środowisku z wieloma monitorami?

17

Mam laptopa z adapterem USB na VGA, który pozwala mi dodać trzeci monitor do mojego laptopa (drugi monitor korzysta z wbudowanego gniazda).

Działa dobrze w systemie Windows Vista - można przejść do ustawień wyświetlania systemu Windows, a system Windows rozpozna trzeci monitor i odpowiednio go przeciągnie. W systemie Windows 7 trzeciego monitora dosłownie nie ma w ustawieniach wyświetlania systemu Windows. Sterownik umożliwia wyświetlanie na trzecim monitorze, ale nie można przenieść się tam, gdzie jest. Ustawienia wyświetlania są niewłaściwie ustawione w stosunku do moich dwóch pozostałych (jeśli przeciągniesz do niego okna, kończą się one na dole, kiedy powinny zostać wyrównane).

Zadzwoniłem do pomocy technicznej i powiedzieli, że nie ma jeszcze sterownika z tą funkcją dla Windows 7. Ale oto moje przeczucie. Rozmieszczenie monitora jest nadal nieco podobne do tego, w którym miałem go w systemie Vista, jest to około 500 pikseli. Myślę, że gdzieś jest klucz rejestru lub plik sterownika, który mówi temu monitorowi, gdzie powinien istnieć. Gdybym mógł po prostu zmodyfikować numer i przesunąć go o 500 pikseli w górę, znalazłby się we właściwym miejscu i nie muszę czekać 6 miesięcy, aż firma wyjdzie z nowym sterownikiem.

Jakieś pomysły?

Gafel
źródło

Odpowiedzi:

8

Sprawdź różne klucze i foldery w

HKEY_CURRENT_CONFIG\System\CurrentControlSet\Control\Video

W szczególności w najbardziej wewnętrznej MonXXXXXXXpodfoldery powinny być Attach.RelativeXi Attach.RelativeYwartości, które są lokalizacja monitorów w odniesieniu do piksela 0,0.

O dziwo, kiedy sprawdzam tutaj maszynę Windows 7 z dwoma monitorami, wydaje się, że nie pokazuje drugiego monitora. Ale moja maszyna XP pokazuje wszystkie trzy moje, więc twój przebieg może się różnić.

Jeśli nic innego, to jest miejsce, aby zacząć!

Ƭᴇcʜιᴇ007
źródło
Świetne znalezisko! Właśnie tych kluczy szukałem. Modyfikacja względnej wartości Y w dwóch miejscach, a następnie ponowne uruchomienie rozszerzonego sterownika USB na pulpicie powoduje jego zmianę. Pozostaje problem: z powodu konfiguracji monitorów muszę wprowadzić NEGATYWNĄ wartość. Jak mam to zrobić? Wprowadzenie dodatniej wartości powoduje, że monitor, którego potrzebuję, jest jeszcze niższy. Oto moja konfiguracja: 2 3 1 To są numery monitorów (1 i 2 dotykają się, a trzy są z boku). Zmiana wartości attach.relativeY sprawia, że ​​3 wydaje się iść jeszcze niżej, chcę ją podnieść.
wygląda na to, że formatowanie tam nie zachowało się, ale mam nadzieję, że dostaniesz sedno - 2 jest powyżej 1, a trzy są po prawej stronie obu, pośrodku między nimi. Cyfrowo system Windows umieszcza go obok monitora 1.
Co się dzieje, gdy próbujesz wprowadzić wartość ujemną? W końcu może być konieczne skonfigurowanie skryptu uruchamiania, aby dokonać korekty po zalogowaniu (jeśli nie będzie się trzymał samodzielnie).
ᴇcʜιᴇ007
Nie możesz wprowadzić wartości ujemnej, Windows ci na to nie pozwoli. W części szesnastkowej rejestru można wstawiać cyfry i litery, aw części dziesiętnej można wprowadzać tylko wartości liczbowe. Ten 4 miliardy numerów, które opublikowałem, na pewno działa i się trzyma, po prostu nie jestem pewien dlaczego. Być może w systemie Windows jest jakiś kod, co oznacza, że ​​429496xxxx oznacza liczbę ujemną. Ostatnie 4 liczby korelują z wielkością przesunięcia pikseli powyżej wartości ujemnej.
Sweeeeeeeet. ;)
ᴇcʜιᴇ007
27

Dla każdego, kto szuka klucza w systemie Windows 7, znajduje się on w jednym z folderów w:

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

Poszukaj Position.cxi Position.cyw każdym z podfolderów; musisz edytować ciąg szesnastkowy.

Konwerter binarny / dziesiętny / szesnastkowy:

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

Sean
źródło
3
Jak rozpoznać, która konfiguracja jest aktywna?
Adisak,
Adisak - Łatwiej było mi po prostu zmieniać wartości we wszystkich pozycjach.
Artanis
1
@Adisak Stare pytanie, ale dla każdego, kto nadal tego szuka, oto co zrobiłem: Kliknij prawym przyciskiem myszy -> eksportuj węzeł konfiguracji (na wszelki wypadek), zapisz go gdzieś. Usuń każdy pojedynczy węzeł podrzędny. Wyloguj się z systemu Windows. Zaloguj się ponownie. Spowoduje to utworzenie 1 nowego elementu, który jest bieżący / aktywny.
René
Aby znaleźć aktywną konfigurację, możesz użyć MonitorInfoView . Nazwy konfiguracji są listami wszystkich połączonych identyfikatorów monitora *, identyfikatory zaczną się od wartości z kolumny Klucz rejestru w MonitorInfoView.
gronostaj
4

Chciałbym wiedzieć, dlaczego to działa, ale wiem, że działa:

Aby monitor działał w górę (ponieważ rejestr nie dopuszcza negatywów), musisz użyć wartości dla attach.relativeY w następujący sposób: 4294967040

Dzięki temu forum za pomoc w zrozumieniu tej części - http://www.ureader.com/msg/164488.aspx

Jeśli zmienisz ostatnie 4 cyfry tego numeru, monitor spadnie i odwrotnie. Działa to również w przypadku attach.relativeX. Trochę poprawek i moja konfiguracja wróciła do normy.

Kto potrzebuje funkcjonalnych sterowników pshh


źródło
i dzięki techie007 za doprowadzenie mnie na właściwą ścieżkę
Kochanie, czy dostaję znak „poprawnej odpowiedzi” za wskazanie klucza? :)
ᴇcʜιᴇ007
Czy potrafisz zrobić połowę poprawnej odpowiedzi? lol
Tylko jeśli dam ci pół punktu za twoje otwarte pytanie. :) Wydaje mi się, że poprosiłeś o „jakieś pomysły”, w jaki sposób możesz to naprawić za pomocą „gdzieś klucza rejestru lub pliku sterownika” - wskazałem klucz rejestru, którego użyłeś, aby go ustawić. Czego jeszcze chcesz? Krew? :) Chyba będę musiał uwzględnić negację lekcji 32-bitowych liczb szesnastkowych w mojej następnej odpowiedzi. ;)
ᴇcʜιᴇ007
Jest tak, ponieważ jest to dodatnia liczba całkowita ujemnej liczby całkowitej. Sprawdź uzupełnienie 2, jeśli chcesz wiedzieć, jak reprezentować liczbę ujemną, a następnie potraktuj bity jako liczbę całkowitą bez znaku, aby uzyskać poprawną wartość wejściową.
Edwin Buck
2

Odejmij kwotę, która ma być ujemna, od 4294967296, aby uzyskać liczbę potrzebną do rejestru. Tj. Dla 4294967296 - 250 = 4294967046.

Dla was maniacy ...

Uciążliwość wynika z faktu, że edytor rejestru nie interpretuje 32 bitów jako nic innego niż całkowitą liczbę dziesiętną bez znaku lub szesnastkową reprezentację danych binarnych. Jednak gdy system Windows pobiera te dane binarne podczas pozycjonowania wyświetlaczy, interpretuje je jako liczbę całkowitą ze znakiem. Aby system Windows wiedział, że 32-bitowa liczba całkowita ze znakiem jest ujemna, ustawia ostatni bit na 1 (skrajnie lewy), a reszta bitów jest odwrócona. Więc -1 będzie miało wartość binarną 11111111 11111111 11111111 11111111 (hex: FF FF FF FF). Jeśli przetłumaczysz to na liczbę całkowitą dziesiętną bez znaku (tak jak robi to edytor rejestru), otrzymasz 4 294 967 295. Zatem dla naszych celów 0 równa się 4 294 967,

dynamichael
źródło
1

Zamiast obliczać wartości ujemne, łatwiej jest zrozumieć, jeśli wszystkie wartości są dodatnie, logiczne 0,0 w fizycznym lewym górnym rogu wirtualnego pudełka, które narysujesz, jeśli spróbujesz otoczyć wszystkie monitory. Pomyśl, kiedy przesuwasz monitor w górę i w lewo, że naprawdę popychasz innych w prawo i w dół.

Na przykład miałem monitor 1280x1024 i 1920x1200 z pierwszym mniejszym domyślnie w prawym górnym rogu drugiego, a nie w lewym dolnym rogu pierwszego, w którym jest on fizycznie ustawiony (po lewej) i wyrównuje się z (dolna krawędź jest na tej samej wysokości , góra jest oczywiście niższa, ponieważ nie jest tak wysoka).

Tak więc na początek drugi monitor 1920x1080 był w pozycji 0,0, a pierwszy w 1920,0. Zamiast próbować obliczyć wartość ujemną - (1920 + 1280), (1200 - 1024) dla pierwszego monitora, po prostu ustawiam pierwszy monitor na wszystkie wartości dodatnie 0, (1200-1024), a drugi na 1280, 0.

Wylogowanie z systemu Windows, a następnie ponowne zalogowanie zastosowało ustawienia dla mnie. Warto również wiedzieć, że działa to na Windows Hyper-V Server (właśnie to zrobiłem na 2012 R2, co oznacza, że ​​te ustawienia nadal działają w Windows 8 i 8.1). Jest to bardzo przydatne dla osób, które nie mają ustawień rozdzielczości ekranu, ale próbują uzyskać komputer typu host bez systemu operacyjnego (rzadko trzeba aktualizować lub ponownie uruchamiać) i pracować wyłącznie z maszynami wirtualnymi za pośrednictwem pulpitu zdalnego (skopiuj to z innej maszyny ).

Dzięki techie007 za oryginalną odpowiedź, był to klucz do rozwiązania tego wszystkiego. Jeśli zaznaczysz ten wariant jako przydatny, nie zapomnij „podnieść” jego odpowiedzi i pytania.

Tony Wall
źródło