Jak przenosić okna otwierane poza ekranem?


272

Mam konfigurację z dwoma monitorami, a ostatnio bawiłem się ustawieniami pozycjonowania, a niektóre z moich aplikacji do pojedynczego okna sprzyjają zachowaniu miejsca, w którym były ostatnio zamknięte, i otwarciu w tej samej pozycji później. Niestety, teraz umieszcza je poza widocznym obszarem moich ekranów!

Czy istnieje jakiś sposób na wymuszenie określonego okna w widocznym obszarze?


2
Jest to nadal problem w systemie Windows 10! Mam 3 monitory i używam tylko jednego „tu i tam” ... kiedy to zrobię, a następnie przestań go używać, niektóre otwarte programy domyślnie otwierają się na nim. Muszę zrobić wygraną + strzałkę w lewo, aby ostatecznie wrócić do głównego monitora.

1
Nadal problem siedem lat później ...
Jack Wasey

Odpowiedzi:


194

W systemie Windows 7 i nowszych użytkownicy: Windows Key+ Shift+ lub przeniesie wybrane okno na monitor w tym kierunku.


2
Dzięki za to miałem aplikację z niestandardowym oknem, więc technika Alt-Space nie działała (Foxit Reader w systemie Windows).
Bdoserror

3
Na uwagę zasługuje również wygrana + lewo / prawo / góra, która umieszcza okno pokrywające połowę aktywnego monitora (po obu stronach) lub maksymalizuje je. Powinno to działać w każdych warunkach, które znalazłem, i są również bardzo przydatnymi klawiszami (z wyjątkiem sytuacji, gdy ciągle je uderzam, próbując fn + klawisze strzałek: P).
Kat

11
To nic nie robi w moim Windows 10 Pro x64
Mike 'Pomax' Kamermans

3
@ Mike'Pomax'Kamermans: Funny. Jest to jedyna rzecz, która działa na moim laptopie z systemem Windows 10 Pro x64, aby przenieść okno Emacsa, które otwiera się poza ekranem.
Mike Sherrill „Cat Recall”

2
Wow, nie mogę uwierzyć, że nigdy o tym nie wiedziałem. Ktoś nadal uważa to za przydatne 8 lat później :)
veryRandomMe

433

Używam tego podejścia:

  • Użyj Alt+, Tababy przejść do aplikacji poza ekranem.
  • Naciśnij Alt+, SPACEaby wyświetlić menu systemowe (nie zobaczysz go, ponieważ jest poza ekranem)
  • Naciśnij, Raby wybrać menu „Przywróć”, aby upewnić się, że okna nie są zmaksymalizowane (nie można go przenieść, jeśli jest zmaksymalizowane)
  • Naciśnij Alt+ SPACEponownie, a następnie, Maby wybrać opcję menu „Przenieś”.
  • Naciśnij jeden z klawiszy strzałek, aby zainicjować ruch.
  • Teraz wystarczy użyć myszy, aby umieścić okno w żądanym miejscu.

Jeśli używasz nieanglojęzycznej wersji systemu Windows, opcje menu „R” i „M” prawdopodobnie będą inne.


8
Wielkie dzięki „Terje Mikal” za twoje rozwiązanie, które mnie uratowało. Ale biorąc pod uwagę, że problem występuje tylko od czasu, gdy system Windows 7 usunął stare dobre rozwiązanie (kliknij prawym przyciskiem myszy przycisk aplikacji na pasku zadań), istnieje jeszcze lepsze rozwiązanie, opublikowane przez „kmote” w dniu 18 czerwca 2013 17:45 pod „Emthigious” 10 października 2010 08:50: «W systemie Windows 7 należy kliknąć prawym przyciskiem myszy klawisz SHIFT na pasku zadań»
Michel Merlin

1
Próbowałem co drugi krok, ale w końcu to zainicjowanie ruchu za pomocą klawiszy strzałek… wow. Byłem tak blisko ponownej instalacji aplikacji!
Philip

1
W przypadku aplikacji, z którą mam do czynienia, funkcja Restore jest wyszarzona, ale funkcja Maximize działa w tej fazie, a następnie ruch nie jest wymagany. Maksymalizuj, aby wygrać!
Brian Bulkowski

Robię jak wyżej, ale następująca kombinacja również działa dla mnie, Alt + Tab, Alt + Space, M, a następnie naciśnij Esc, to też wydaje się działać
Mz A

Jest prawie 2020 r., Wciąż to rozwiązuje.
Mert

14

W systemie Windows 10, aby użyć starej sztuczki polegającej na przesuwaniu okna za pomocą klawiszy kursora, należy Shiftnacisnąć klawisz podczas otwierania menu kontekstowego z paska zadań.

wprowadź opis zdjęcia tutaj

Informacje z How To Geek


3
W bieżących kompilacjach systemu Windows 10 można również najechać myszką na pasek zadań i przytrzymać przez sekundę, co spowoduje wyświetlenie widoku miniatur okna. Kliknięcie miniatury prawym przyciskiem myszy daje „stare” menu kontekstowe, podobnie jak kliknięcie z wciśniętym klawiszem Shift.
Coderer

1
@Coderer: Komentarz jest bardzo pomocny, nie wiedziałem o tym. Myślałem, że całkowicie to usunęli.
Oak_3260548,

Zupełnie o tym zapomniałem! Myślę, że możesz również kliknąć z wciśniętym klawiszem Shift, jeśli przycisk paska zadań reprezentuje jedno okno. Otrzymasz inne menu kontekstowe, jeśli istnieje więcej niż jedno okno dla danej aplikacji.
Coderer

12

Możesz kliknąć prawym przyciskiem myszy przycisk programu na pasku zadań, a następnie kliknąć „Przenieś”. Teraz możesz użyć przycisków strzałek na klawiaturze, aby przesunąć okno, w którym możesz je zobaczyć. Wymaga trochę majstrowania, czasem okna „zacinają się” na krawędziach monitorów. Możesz także spróbować użyć myszy, ale klawiatura jest nieco bardziej niezawodna, jeśli nie widzisz jeszcze okna ;-)


2
Nie wiedziałem o klawiaturze, ale nie można używać myszy, jeśli są one poza ekranem, próbowałem już tego.
Matthew Scharley,

2
Powinieneś być w stanie używać klawiszy strzałek, nawet jeśli są one poza ekranem, chyba że w systemie jest coś niestandardowego, co to uniemożliwia. To zawsze była moja standardowa odpowiedź dla osób napotykających ten problem.
music2myear

9
Również po naciśnięciu co najmniej jednego klawisza strzałki okno zostaje „przymocowane” do myszy i można je przesuwać za pomocą myszy (bez klikania!) Takie podejście z jednym klawiszem plus mysz jest zwykle szybsze niż używanie tylko klawiszy.
Daniel Rikowski

8
W systemie Windows 7 należy kliknąć prawym przyciskiem myszy przycisk paska zadań SHIFT.
kmote

To jedyne rozwiązanie, które zadziałało dla mnie ...
sebagomez

8

Wcześniej, zanim pojawił się pasek zadań, naprawiałem ten problem, Alt+Spaceaby wyświetlić menu okna, a następnie Mfunkcję Przenieś. Klawisze strzałek pozwoliłyby następnie przenieść okno z powrotem na ekran.


+1 z zastrzeżeniem, że nie ruszą się, jeśli zostaną zmaksymalizowane do ekranu, może to stanowić problem, jeśli okna nie są po prostu „poza limitami”, ale znajdują się na ekranie zastępczym. Mogą dotyczyć PO, ponieważ maksymalizacja powinna obejmować całą rozdzielczość zajętego ekranu.
mckenzm

8

Innym szybkim sposobem jest kliknięcie r paska zadań i wybranie Kaskadowego systemu Windows.


4
Jest to dość brzydki sposób, ponieważ ma to wpływ na wszystkie moje otwarte okna (i zazwyczaj mam też przynajmniej otwartą przeglądarkę, jeśli nie pół tuzina innych)
Matthew Scharley,

1
To prawda, że ​​jednak jest najszybszy. Możesz także zamknąć okno, które było poza ekranem i użyć kaskady cofania po tej, która przywróci pozycje okien. Nie wiem, czy przywróci również pozycję okna, które było poza ekranem do tej pozycji, ponieważ nie mogę tego wypróbować (mam tylko jeden monitor).
T. Kaltnekar

5

Wpadłem na ten problem i absolutnie nic mi nie działało. Więc poszedłem do Menedżera zadań i kliknąłem prawym przyciskiem myszy program, który był poza ekranem. Przełącz na nie działał ani nie pojawiał się na pierwszym planie. Należy zauważyć, że było to okno statyczne, więc maksymalizacja była niedostępna za pośrednictwem paska zadań. Ale możesz zmaksymalizować za pomocą Menedżera zadań, a to prowadzi do głównego ekranu! Stamtąd możesz robić wszystko, co potrzebujesz, korzystając z okna. :)


Dziękuję za tę odpowiedź. Tylko kliknięcie prawym przyciskiem myszy i maksymalizacja w Menedżerze zadań było dla mnie skuteczne.
koder

5

Edycja: wycofany zgodnie z komentarzami

Aby szybko rozwiązać ten problem w przyszłości i ustawić aplikacje na podwójnym ekranie, mogę polecić Winsplit Revolution . Zmniejsza to rozwiązanie tego problemu po prostu naciskając Ctrl-Alt i klawisz Num-Pad, aby umieścić okno z powrotem dokładnie tam, gdzie chcesz.


niestety nie jest już wolny
Charbel

Tak, wygląda dobrze, ale mam ścisłą politykę nie płacenia, chyba że chcę to zrobić. Podobnie jak w przypadku Lastpass lub Acronis True Image. Z moim harmonogramem jest bardzo możliwe, że może minąć więcej niż 30 dni, zanim problem pojawi się ponownie, więc okresy próbne nie działają dla mnie.
SDsolar

1
Rewolucja WinSplit została niestety zakończona i nie pojawiają się nowe aktualizacje. ”Zastąpiony przez„ MaxTo ”, obecnie 19 USD
TT

1
WinSplit-rewolucja jest darmowy i jest nadal dostępna dla pobrania jeśli szukać dla niego. Ostatnia wersja to 11.04, wydana w 2011 roku. Działa w systemie Windows 10. Zmodyfikowane źródło v9.02 jest dostępne w GitHub jako WinSplit-Reloaded . To niesamowity produkt.
Ben

@Ben, dzięki za linki. Poszedłem do linku w odpowiedzi i zacytowałem te informacje. (Teraz na stronie jest napisane: „WinSplit Revolution nie jest już dostępny, ale oferujemy doskonałą alternatywę.”) Readme w tym widelcu GitHub ma charakter informacyjny i konkretnie wspomina o „wersji 9.02, opublikowanej publicznie w 2009 roku”.
TT--

3

Używam fajnego małego narzędzia o nazwie Shove-it, które po prostu sprawdza, czy jakieś okno znajduje się poza krawędzią ekranu i ponownie wsuwa je z powrotem na ekran. To starożytne oprogramowanie (i strona główna to potwierdza), ale działa na wszystkich wersjach systemu Windows.


Link już nie żyje :-(
Danio

:-( z drugiej strony to rozwiązanie mogło przetrwać. Czy to się kiedykolwiek zdarza?
Minęły


Instalator po prostu się dla mnie zamyka (w systemie Windows 7).
mhenry1384

@ mhenry1384 cóż, ma 14 lat (i 32-bitowy), nie możemy się spodziewać, że będzie działał z nowymi (64-bitowymi?) wersjami .....
Torben Gundtofte-Bruun

3

Właśnie natknąłem się na ten problem z Git GUI w systemie Windows 7, który jest oparty na Tk i jako taki ma tendencję do wyskakiwania w dziwny sposób w systemie Windows. Próbowałem uderzyć w Alt-Space i użyć polecenia move, aby zasłonić go z powrotem, ale wydawało się, że utknęło. Maksymalizacja go przywróciłaby go z powrotem, ale jeśli przestawię go z powrotem w tryb okienkowy, zniknie ponownie.

To, co zrobiłem, to zmaksymalizowanie go, złapanie paska tytułu i przeciągnięcie go na bok ekranu, aby Aero Snap przeskalował go do połowy rozmiaru ekranu i przełączył w tryb okienkowy. Następnie odciągnąłem go z boku ekranu i odzyskałem nad nim kontrolę.


Tak wiele odpowiedzi jest bardziej pozytywnie ocenionych, ale żadna z nich nie działała dla mnie. Tak się stało.
Dan Nissenbaum

Git GUI też mnie tu przywiózł, ale rozwiązałem go za pomocą kombinacji Shift-RightClick (na ikonie paska zadań), Przenieś, klawisz strzałki, a następnie myszy (aby umieścić okno tam, gdzie powinno być). Rozwiązanie Emthigious / Brad Patton działa.
mcalex,

1

Miałem ten sam problem z Winampem. Jedyne (niezadowalające) rozwiązanie, jakie do tej pory znalazłem: zmień rozdzielczość ekranu na inną iz powrotem

Tomasz


1

Możesz użyć NIRSOFT WinLister. Zauważyłem, że metoda „Przenieś” nie jest dostępna w systemie Windows 7, gdy używasz klasycznego motywu, i różne inne metody zawiodły, więc zamieszczam alternatywę „JEŚLI wszystko inne zawodzi”.

  1. Pobierz aplikację WinLister tutaj .

  2. Uruchom WinLister jako Administrator i wybierz okno, które chcesz przenieść z powrotem na ekran. Nie działa, ponieważ administrator nie daje aplikacji możliwości przeniesienia okien.

  3. Kliknij prawym przyciskiem myszy i wybierz „Wyśrodkuj wybrane okna” i gotowe!

Zrzuty ekranu tutaj .


1
Świetna wskazówka - to jedyne rozwiązanie, które działało dla mnie dla elektronarzędzi MS TFS, ponieważ Alt-Space otworzyło tylko menu dla posiadającego okno eksploratora Windows, a nie podokno, które było poza ekranem.
danio

1

W niektórych przypadkach, pomimo posiadania wielu ekranów w zdalnej lokalizacji, możesz nie mieć do nich dostępu ze swojej lokalizacji. Klawisze nie będą działać, ponieważ został zablokowany widok, który nie jest wyświetlany na ekranie.

W takim przypadku, jeśli możesz otworzyć dodatkowe wystąpienia aplikacji, zrób to. Pierwsze kilka instancji prawie na pewno pojawi się na pasku zadań jako jeszcze więcej fantomowych okien. Rób to dalej. W końcu zaczną wypełniać widok główny. Następnie użyj ikony paska zadań, aby kliknąć prawym przyciskiem myszy i zamknąć wystąpienia poza ekranem. Gdy nie zostaną otwarte żadne instancje poza ekranem, zamknij te na ekranie głównym. Następnym razem, gdy otworzysz tę aplikację, pojawi się ona na ekranie głównym, a nie „poza kamerą”.


1
Co masz na myśli: „zdalna lokalizacja”, „Twoja lokalizacja” itp.? Dlaczego użytkownik zostałby „zablokowany na widoku, który nie jest wyświetlany na ekranie”?
Scott

On ma na myśli VM, Citrix, RDP itp. Nie będziesz czytał wielu-4K na swoim telefonie. Dotyczy to również ekranów zastępczych. Niektórzy użytkownicy korporacyjni podłączają klucz HDMI, aby zaparkować upominki na pulpicie poza zasięgiem wzroku. Powrót do 1 prawdziwego ekranu powoduje ich cofnięcie.
mckenzm

1

Wybierz okno (np. Za pomocą Alt+ Tab). Następnie przytrzymaj Alt+ F7i przesuń okno za pomocą klawiszy strzałek z powrotem do widoku. Gotowy.

Czasami trudno jest ślepo wiedzieć, gdzie znajduje się ukryte okno (a tym samym jak przesunąć je w kierunku ekranu). Pomocne mogą być animacje podczas wyboru okna. Ze względu na moją konfigurację (czasami używam drugiego ekranu na ekranie laptopa), okna, które pojawiają się poza ekranem, są zwykle poniżej. Przytrzymanie Alt+ F7+ Uppowoduje ich wyświetlenie.


1

Dla każdego, kto zna PowerShell, spróbuj tego:

  • Skopiuj i wklej poniższy kod do sesji PowerShell ISE.
  • Hit Run
  • Naciśnij ALT + TAB / cokolwiek, aby uaktywnić okno poza ekranem
  • Poczekaj kilka chwil (5 sekund od naciśnięcia RUN na skrypcie)
  • Okno powinno się teraz pojawić.

Jeśli okno jest oknem głównym, zostanie przeniesione do lewego górnego rogu ekranu.

Jeśli okno jest oknem potomnym innego programu, jego lewy górny róg zostanie wyrównany z lewym górnym rogiem okna nadrzędnego.

Add-Type @"
    using System;
    using System.Runtime.InteropServices;

    // https://msdn.microsoft.com/en-us/library/windows/desktop/dd162897(v=vs.85).aspx
    public struct RECT 
    {
        public long left;
        public long top;
        public long right;
        public long bottom;
    }

    public class User32WinApi 
    {

        // https://msdn.microsoft.com/en-us/library/windows/desktop/ms633505(v=vs.85).aspx
        /*
            Gets the handle of the in-focus window
            NB: In some scenarios this can be NULL; so code needed to handle such an event
        */
        [DllImport("user32.dll")]
        public static extern IntPtr GetForegroundWindow();

        // https://msdn.microsoft.com/en-us/library/windows/desktop/ms633503(v=vs.85).aspx
        /*
            top & left are always 0 (i.e. since the rectangle is relative to the window itself)
            bottom & right equal the windows hieght and width, respectively.
        */
        [DllImport("user32.dll")]
        [return: MarshalAs(UnmanagedType.Bool)]
        public static extern bool GetClientRect(IntPtr hWnd, out RECT lpRect);

        // https://msdn.microsoft.com/en-us/library/windows/desktop/ms633534(v=vs.85).aspx
        [DllImport("user32.dll")]
        [return: MarshalAs(UnmanagedType.Bool)]
        public static extern bool MoveWindow(IntPtr hWnd, int X, int Y, int nWidth, int nHeight, bool bRepaint);

    }

"@
$repaint = $true 
$windowSize = New-Object RECT

"Quick; get the window you're after in focus; you have 5 seconds..."
Start-Sleep -Seconds 5 #allow 5 seconds for the user to get the window they're after in focus (e.g. using ALT+TAB / whatever)
$activeWindow = [User32WinApi]::GetForegroundWindow()
if ($activeWindow) {
    if([User32WinApi]::GetClientRect($activeWindow, [ref]$windowSize)) {
        if ([User32WinApi]::MoveWindow($activeWindow, 0, 0, $windowSize.right, $windowSize.bottom, $repaint)) {
            "Window moved successfully (hope you agree!)"
        } else {
            Write-Warning "Failed to move the active window"
        }
    } else {
        Write-Warning "Failed to get size of the active window"    
    }
} else {
    Write-Warning "No active window found"    
}

Oryginalny kod tutaj: https://gist.githubusercontent.com/JohnLBevan/1593bbb860c2d2af436a1c9414e8adfa/


0

umieść kursor na pasku zadań .. kliknij prawym przyciskiem myszy wybierz pokaż okno obok siebie .. spowoduje wyświetlenie okna na ekranie .. i na koniec ponownie przywołaj kursor na pasku zadań kliknij prawym przyciskiem myszy wybierz cofnij pokaż okno obok siebie ..


0

Możesz także użyć UltraMon (non-free, Windows, GUI), aby skonfigurować skrót klawiaturowy, aby przenieść okno do następnego lub poprzedniego monitora.

wprowadź opis zdjęcia tutaj


0

Z Przenieś okno na dolny / górny monitor za pomocą skrótu w systemie Windows firmy Tymric :

Napisałem skrypt AHK.

Stosowanie:

Win+ Alt+ Arrow: Przenieś aktywne okno do monitora, którego kierunek wskazuje strzałka. Pamiętaj, że może to spowodować przesunięcie okna poza ekran, jeśli spróbujesz przejść z monitora 2 lub bezpośrednio z monitora 3 w konfiguracji. Zaktualizuję to w przyszłości.

Win+ Alt+ Number: Przenieś aktywne okno do podanego numeru monitora

#Persistent

SysGet, MonitorCount, MonitorCount


#!Up::
  GoSub CalculateDisplacement
  WinMove, A, , %xPos%, %displaceYneg%
  return
#!Down::
  GoSub CalculateDisplacement
  WinMove, A, , %xPos%, %displaceYpos%
  return
#!Left::
  GoSub CalculateDisplacement
  WinMove, A, , %displaceXneg%, %yPos%
  return
#!Right::
  GoSub CalculateDisplacement
  WinMove, A, , %displaceXpos%, %yPos%
  return

#!1::
  GoSub CalculateDisplacement
  WinMove, A, , %xPosOn1%, %yPosOn1%
  return

#!2::
  if (MonitorCount > 1) {
    GoSub CalculateDisplacement
    WinMove, A, , %xPosOn2%, %yPosOn2%
  }
  return

#!3::
  if (MonitorCount > 2) {
    GoSub CalculateDisplacement
    WinMove, A, , %xPosOn3%, %yPosOn3%
  }
  return

#!4::
  if (MonitorCount > 3) {
    GoSub CalculateDisplacement
    WinMove, A, , %xPosOn4%, %yPosOn4%
  }
  return

#!5::
  if (MonitorCount > 4) {
    GoSub CalculateDisplacement
    WinMove, A, , %xPosOn5%, %yPosOn5%
  }
  return

#!6::
  if (MonitorCount > 5) {
    GoSub CalculateDisplacement
    WinMove, A, , %xPosOn6%, %yPosOn6%
  }
  return

#!7::
  if (MonitorCount > 6) {
    GoSub CalculateDisplacement
    WinMove, A, , %xPosOn7%, %yPosOn7%
  }
  return

#!8::
  if (MonitorCount > 7) {
    GoSub CalculateDisplacement
    WinMove, A, , %xPosOn8%, %yPosOn8%
  }
  return

#!9::
  if (MonitorCount > 8) {
    GoSub CalculateDisplacement
    WinMove, A, , %xPosOn9%, %yPosOn9%
  }
  return


CalculateDisplacement:
  WinGetPos, xPos, yPos, , , A
  Loop, %MonitorCount% {
    SysGet, MonitorDimension, Monitor, %A_Index%
    if (xPos > MonitorDimensionLeft and xPos < MonitorDimensionRight and yPos < MonitorDimensionBottom and yPos > MonitorDimensionTop) {
      currentMonitor = %A_Index%
    }
  }
  SysGet, thisMonitor, Monitor, %currentMonitor%
  displaceXpos := xPos + thisMonitorRight - thisMonitorLeft
  displaceYpos := yPos + thisMonitorTop - thisMonitorBottom
  displaceXneg := xPos - thisMonitorRight + thisMonitorLeft
  displaceYneg := yPos - thisMonitorTop + thisMonitorBottom
  Loop, %MonitorCount% {
    SysGet, nextMonitor, Monitor, %A_Index%
    xPosOn%A_Index% := xPos - thisMonitorLeft + nextMonitorLeft
    yPosOn%A_Index% := yPos - thisMonitorTop + nextMonitorTop
  }
  return

0

Napisałem narzędzie o nazwie Borderline , które automatycznie uruchomi okna poza ekranem po uruchomieniu. Musisz go uruchomić, gdy go potrzebujesz (działa najlepiej, jeśli przypiszesz mu skrót klawiaturowy lub umieścisz go w menu Start), ale oznacza to również, że nie zawsze działa w tle.


0

Czasami to rozwiązało:

  • Kliknij WinKey+P
  • Wybierz Extendlub inną opcję, a wszystkie okna będą kaskadowe. Przenieś żądane okno do ekranu głównego.

-1

Jak przenosić okna otwierane poza ekranem?

Tymczasowo zmniejsz rozdzielczość ekranu, chwyć górny pasek za pomocą myszy i przesuń środek. Poczekaj, aż system automatycznie przywróci rozdzielczość.

  1. DeskTop -> Rozdzielczość ekranu
  2. Wybierz monitor, zmień rozdzielczość na niższą niż bieżące ustawienie.
  3. System pokazuje nową rozdzielczość, pyta, czy chcesz zachować lub przywrócić za 30 sekund.
  4. W ciągu 30 sekund złap okno, w którym znajduje się miss, i przenieś je na środek.
  5. Poczekaj, aż limit czasu zostanie automatycznie cofnięty.

Okno zostało przeniesione ...

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.